AWKでテキストファイルの任意の文字列から任意の文字列までを抽出する

やりたいこと

100行の文字列の中で、5行目の特定の文字列(hoge)から10行目の特定の文字列(fuga)までの文字列を改行も含め取得したいという場合に有効。

awkで実行可能という事が分かった。

コマンドがシンプルで驚いた。さすがawk

参考URL:

やってみた

テスト用テキストを作成

1から100の文字列が書かれた100行のtest.txtというファイルを作成してみた。

% for i in `seq 1 100` ; do echo ${i} >> test.txt ;done

50という文字列から60という文字列を含んだ区間のテキストだけを抽出

このコマンドだけで50が含まれる文字列から60が含まれる文字列迄を抽出可能。

% cat test.txt | awk '/50/,/60/'

実行結果:

50
51
52
53
54
55
56
57
58
59
60

以下のコマンドでも同じ結果を出力可能

いや、できますけど。。。汚すぎて吐き気がするぜ★

% cat test.txt | grep -A100 50 | grep -B100 60

補足

sedとgrepでよく似たことをされているページを発見。
やりたいことは行内の文字列なので少し違うけど。

コメント

タイトルとURLをコピーしました