パターン範囲
パターン範囲
パターン範囲
ここまでSEDの「pコマンド」を使って、行番号を元に、特定の範囲に含まれる行を抽出しました。
ここからは、特定のパターン(正規表現)に該当する行や、その行を基準に特定の範囲(パターン範囲)に該当する行を
抽出する方法を学習します。
具体的には、
- 特定の文字列を含む行や
- 行頭に特定の文字列を含む行、
- 3桁の数字を含む行 など
前章で学習したような正規表現のパターンに該当する行を抽出させる方法について、学習します。
パターン範囲の練習①
書式:特定の文字列を含む行を抽出
次の書式の通り、スラッシュの間に検索パターン(正規表現)を指定しながら、pコマンドを併用することで、
特定のパターンに含む行を抽出することができます。
1 | sed –n ‘/検索パターン/ p’ ファイル名 |
実践
文字列「Paulo」が含まれた行のみ出力します。
1 | [user01@localhost ~]$ sed -n '/Paulo/ p' books.txt |
2 | 3) The Alchemist, Paulo Coelho, 197 |
3 | 5) The Pilgrimage, Paulo Coelho, 288 |
図
パターン範囲の練習②
検索パターンについては、開始行や終了行などに指定することもできます。
そうすることで、特定の検索パターンに該当する行を基準に、複数行を表示させることができます。
次の例では、文字列「Alchemist」が含まれた行から5行目までを出力します。
1 | [user01@localhost ~]$ sed -n '/Alchemist/, 5 p' books.txt |
2 | 3) The Alchemist, Paulo Coelho, 197 |
3 | 4) The Fellowship of the Ring, J. R. R. Tolkien, 432 |
4 | 5) The Pilgrimage, Paulo Coelho, 288 |
図
パターン範囲の練習③
ドル($)を使用して、任意の文字列(The)が含まれた行から最後まで出力します。
1 | [user01@localhost ~]$ sed -n '/The/,$ p' books.txt |
2 | 2) The Two Towers, J. R. R. Tolkien, 352 |
3 | 3) The Alchemist, Paulo Coelho, 197 |
4 | 4) The Fellowship of the Ring, J. R. R. Tolkien, 432 |
5 | 5) The Pilgrimage, Paulo Coelho, 288 |
6 | 6) A Game of Thrones, George R. R. Martin, 864 |
図
パターン範囲の練習④
コンマ(,)を使用して、複数のパターン範囲を指定することもできます。
次の例では、文字列「Two」が含まれた行から文字列「Pilgrimage」が含まれた行の間に
存在するすべての行を出力します。
1 | [user01@localhost ~]$ sed -n '/Two/, /Pilgrimage/ p' books.txt |
2 | 2) The Two Towers, J. R. R. Tolkien, 352 |
3 | 3) The Alchemist, Paulo Coelho, 197 |
4 | 4) The Fellowship of the Ring, J. R. R. Tolkien, 432 |
5 | 5) The Pilgrimage, Paulo Coelho, 288 |
図
パターン範囲の練習⑤
プラス(+)演算子の使用方法を練習しましょう。
次の例では、文字列「Two」が含まれた行を出力し、その行を基準に
後ろの4行目まで出力します。
1 | [user01@localhost ~]$ sed -n '/Two/, +4 p' books.txt |
2 | 2) The Two Towers, J. R. R. Tolkien, 352 |
3 | 3) The Alchemist, Paulo Coelho, 197 |
4 | 4) The Fellowship of the Ring, J. R. R. Tolkien, 432 |
5 | 5) The Pilgrimage, Paulo Coelho, 288 |
6 | 6) A Game of Thrones, George R. R. Martin, 864 |
図
NEXT>> 文字列置換