パターン範囲

パターン範囲

パターン範囲

ここまでSEDの「pコマンド」を使って、行番号を元に、特定の範囲に含まれる行を抽出しました。
ここからは、特定のパターン(正規表現)に該当する行や、その行を基準に特定の範囲(パターン範囲)に該当する行を
抽出する方法を学習します。
具体的には、

  • 特定の文字列を含む行や
  • 行頭に特定の文字列を含む行、
  • 3桁の数字を含む行 など

前章で学習したような正規表現のパターンに該当する行を抽出させる方法について、学習します。

パターン範囲の練習①

書式:特定の文字列を含む行を抽出

次の書式の通り、スラッシュの間に検索パターン(正規表現)を指定しながら、pコマンドを併用することで、
特定のパターンに含む行を抽出することができます。

sed –n ‘/検索パターン/ p’ ファイル名

実践

文字列「Paulo」が含まれた行のみ出力します。

[user01@localhost ~]$ sed -n '/Paulo/ p' books.txt
3) The Alchemist, Paulo Coelho, 197
5) The Pilgrimage, Paulo Coelho, 288

パターン範囲の練習②

検索パターンについては、開始行や終了行などに指定することもできます。
そうすることで、特定の検索パターンに該当する行を基準に、複数行を表示させることができます。
次の例では、文字列「Alchemist」が含まれた行から5行目までを出力します。

[user01@localhost ~]$ sed -n '/Alchemist/, 5 p' books.txt
3) The Alchemist, Paulo Coelho, 197
4) The Fellowship of the Ring, J. R. R. Tolkien, 432
5) The Pilgrimage, Paulo Coelho, 288

パターン範囲の練習③

ドル($)を使用して、任意の文字列(The)が含まれた行から最後まで出力します。

[user01@localhost ~]$ sed -n '/The/,$ p' books.txt
2) The Two Towers, J. R. R. Tolkien, 352
3) The Alchemist, Paulo Coelho, 197
4) The Fellowship of the Ring, J. R. R. Tolkien, 432
5) The Pilgrimage, Paulo Coelho, 288
6) A Game of Thrones, George R. R. Martin, 864

パターン範囲の練習④

コンマ(,)を使用して、複数のパターン範囲を指定することもできます。
次の例では、文字列「Two」が含まれた行から文字列「Pilgrimage」が含まれた行の間に
存在するすべての行を出力します。

[user01@localhost ~]$ sed -n '/Two/, /Pilgrimage/ p' books.txt
2) The Two Towers, J. R. R. Tolkien, 352
3) The Alchemist, Paulo Coelho, 197
4) The Fellowship of the Ring, J. R. R. Tolkien, 432
5) The Pilgrimage, Paulo Coelho, 288

パターン範囲の練習⑤

プラス(+)演算子の使用方法を練習しましょう。
次の例では、文字列「Two」が含まれた行を出力し、その行を基準に
後ろの4行目まで出力します。

[user01@localhost ~]$ sed -n '/Two/, +4 p' books.txt
2) The Two Towers, J. R. R. Tolkien, 352
3) The Alchemist, Paulo Coelho, 197
4) The Fellowship of the Ring, J. R. R. Tolkien, 432
5) The Pilgrimage, Paulo Coelho, 288
6) A Game of Thrones, George R. R. Martin, 864


NEXT>> 文字列置換