[Unix] シェルでgrepとawkを組み合わせて特定の部分を抜き出す

grepとawkを組み合わせて特定の部分を抜き出すテクニックです。 イメージとしては、grepで部分的に絞り込みを行い、awkで特定の部分をさらに抜き出すイメージです。 以下の例は wgetで取得したログファイルを元に、404が表示されてからその2行上に問題のURLがある時に問題のURLのみを抜き出すイメージです。 ```bash `gutter:false; $ cat hogehoge.log | grep -B 2 '404' | awk '/https/{print $NF}' ``` grepで-Bを指定するとマッチした場所から指定した行数分前を表示する事ができます。 awkで処理をするためのパターンマッチを記述すれば、その行に対して処理をする事ができます。 今回はその行の3番目のフィールドを表示させようとしています。 コマンドは色々組み合わせると強力なツールになりますが、少しづつコツを掴んでボキャブラリーを増やす必要があります。

0 件のコメント :

コメントを投稿