Linuxを仕事で使っていると
「昨日実行したログだけ引っ張り出したいなぁ」
「圧縮ファイルいちいち解凍して検索すんのだるいなぁ」
みたいなシチュエーションにぶつかることがよくある。
自前の検索性を高めるためにもシェル芸を身につけるのはかなり有益と目する。
と思ってシェル芸の記事を書こうと思ったんだけど、シェル芸ってほど長いものでもないやつしか出てこなかったため、「よく使うシェルコマンド」に命名変更しました。
まぁ、はじめからみんなフルマラソン走れるわけじゃないよね(いいわけ)
かんたんなワンライナーShellを上げてこうかと思います。
仕事でよく使ったり詰まる事が多いものを。
環境は概ねmac OSXでやってます。
1:セレクト文を含むファイル名と該当レコード一覧を作成
ls ./* | xargs grep select
-- 拡張子 / 再帰
ls ./*.txt -R | xargs grep select
-- 含まない
ls ./*.txt -R | xargs grep -v select
2:gzファイル内のテキストからfailを含むログを出力する(解凍しない)
zgrep "fail" *.gz > test.log
--該当文字列を含むレコードをカウント。
zgrep -o "2016/07/2" *.gz | uniq -c
3:tarで複数ファイルを圧縮
tar -cf tar02.tar *
4:tarの中身一覧を参照
--tar
tar -tvf *.tar
5:tar.gzの中身を直接参照
--tar.gz
tar -zxOf tar01.tar.gz
6: sedを使った文字列置換
cat foo.txt | sed 's/\.//g' > bar.txt
-- タブ文字変換(macOSX限定)
sed -e 's/<Ctrl+v><tab>/\"<Ctrl+v><tab>\"/g' foo.csv > bar.tsv
参考:
http://qiita.com/b4b4r07/items/8c1911092002d0b457a6
http://d.hatena.ne.jp/m-hiyama/20080725/1216956895
http://qiita.com/kyanagimoto/items/37cc8e7a242ca2d1a29e
http://takuya-1st.hatenablog.jp/entry/2014/08/04/152101
いつもお世話になっております。
vol.2は気が向いたらアップするとおもいます。