シェル芸人への道
第2回シェル芸人養成勉強会に参加してきた。
hbsstudyハンズオンにも参加していたので、なんとなく雰囲気が掴めていて前回よりついていけたような気がする。 前回と同じく以下、自分の知らなかったことの(断片的な)まとめ。
パイプステータス
パイプを何個もつなげると、最後の終了ステータスしか分からないと思っていたが、実はPIPESTATUSに最後のステータス以外も配列として格納されている。
% echo hoge | cat hoge % echo hoge | cat | cat | cat | cat hoge % echo ${PIPESTATUS[@]} 0 0 0 0 0 % echo hoge | cat | cat error | cat | cat cat: error: No such file or directory % echo ${PIPESTATUS[@]} 0 0 1 0 0
フィールドを指定したソート
-kn,m (nは開始フィールド、mは終了フィールド)オプションでソートに使用する基準を指定できる。-kオプションを使うことは知っていたけど、このあたりの理解が曖昧になっていた。
% cat hoge a 12 a 13 b 13 a 432 b 111 b 43 # フィールド1番目、2番目の順でそれらをキーとしてソート % sort hoge | sort -k1,1 -k2,2nr a 432 a 13 a 12 b 111 b 43 b 13
ランダムソート
要素をランダム(ハッシュに応じて)ソートする。これはソートと言っていいのか?という疑問はある。
% seq 1 10 | sort -R 5 9 1 2 6 3 10 8 4 7
grep検索パターンをファイルから指定
-fオプションを使うことにより、検索するパターンをファイルから取得できる。これは便利。% cat fuga hoge fuga piyo % cat fuga2 fuga piyo piyopiyo # fuga2の内容をパターンとしてfugaからgrep % grep -f fuga2 fuga fuga piyo
プロセス置換
(ご指摘を受けたので修正)
以下のようにすると、プロセスの入出力をファイルのように取り扱うことができる(ファイルは出力していない)。
% cat hoge a 12 a 13 b 13 a 432 b 111 b 43 % wc <(cat hoge) 6 12 32 /dev/fd/63
どれも明日使える内容ばかりですね!!
しかしこれくらいで感心しているようでは、シェル芸人の道のりはまだまだ遠い。。
0 件のコメント:
コメントを投稿