awk コマンドが便利なことを知った
2018/02/22 06:30:41
Mac のターミナルで、いろいろとログを見るようになってきたんですが、awk コマンドが便利。
どういうコマンドかというと、テキストファイルを指定した条件で任意のアクションを実行させることができるものです。
$ awk 'パターン {アクション}' ファイル名
例えば、下記のような感じで。
$ awk '/hoge/{print $1}' hogehoge.txt
上記の処理はこんな感じ。
- hogehoge.txt を1行ずつ読み込む
- 各行をみて hoge を含む行を抽出する
- print で $1 フィールドに相当する要素を表示する
基本的に、区切り文字ありのテキストデータを処理するときに使います。
csv ファイルとかね。
パイプを使えばもっと便利
コマンド使うときに、やっぱりお世話になるのが パイプ。
$ cat hogehoge.txt | awk '/hoge/{print $1}'
これも前述の処理とほぼ一緒。
標準出力された文字列も処理対象にできるんですね。
私は、Docker の不要になったイメージ削除で使ったりします。
$ docker images | awk '/<none/{print $3}' | docker rmi
こうすると、バージョンが <none>
になっている Docker イメージを一括で削除できる。
これはかなり便利。
結構、イメージを更新していったりすると、溜まっていくんですよね。
一個一個消していくの面倒。
でもこれなら、一発。
便利さを知ってから、いろんなことに使ってます。
こういうことやりだすと、シェル芸人とか言われるみたいです。
私もシェル芸人なのかな。笑