概要
最近シェルコマンドに触れたので、その際に使った便利なシェルコマンドを紹介したいと思います。芸まで昇華させるには茨の道ですが、時々触って行こうと思います。
find
ファイルとかを見つけたい時に便利です。このディレクトリには絶対に入ってないから対象外にしたい と思ったことはありませんか?そんな時には以下のコマンド
find ./hogehoge -type d -name maguro -prune -o -type f -print
これでhogehogeの配下にある、maguroフォルダ以外を対象として検索してくれます。めでたしめでたし。
xargs
xargsと調べると、 コマンドラインを作成して実行する と出てきます。自分はコマンドを組み合わせる時に使うパイプ | と一緒だと勘違いしていましたが、実際に使ってみると全然違いました。以下のようなコマンドだとわかりやすいです。
A
find . -type f | xargs grep "printf"
B
find . -type f | grep "printf"
Aはファイルの中身に printf が含まれるファイルのpathと該当行を返してくれますが、Bはファイル名にprintfが含まれるものを返してくれます。
awk
awkコマンドはすごく便利です。テキストの削除も切り出しもこのコマンド一つでできてしまいます。正規表現が自由自在に使える方は愛用してそうだと勝手に思いました。
awkの使い方の一例として、 xargsのAの実行で以下のような結果になったとします。
Aの実行結果
./hogehoge/aaa.c: printf('Hello, World!');
pathは邪魔でコードのところだけ欲しいという方は
find . -type f | xargs grep "printf" | awk '{$1 = ""; print}'
とすることで取り除いてくれます。便利便利。
他にも、 特定の文字以降を消し去りたいと思った方は、
awk '{sub("\/.*", "");print $0;}'
このように用いることで消し去ってくれます。愉快愉快。
まとめ
今回挙げたコマンド以外にも、sedやcutなど調べたコマンドはございましたが、awkの方が最強なんじゃないかなと今の知識レベルでは思ったので割愛させていただきます。また、シェル芸と正規表現は表裏一体なのかなと思うので機会があれば正規表現の記事も書こうと思います。