使い慣れないコマンド
xargs - 標準入力からコマンドラインを作成し、実行する
なんのこっちゃ。
たとえば大量のファイルを消そうとしたときに
$ rm *
だと引数が多すぎて怒られることがある。
これをファイルリストの引数として xargs に渡せば制限を越えないようにいい感じに処理してくれるという親切。
$ ls * | xargs rm
expand / unexpand - えきすぱんだ / あんえきすぱんだ
expand : タブ文字 → スペース
unexpand : スペース → タブ文字
nl - 行番号を付けてファイル出力
vi の :set number みたいなもの。標準入力からやってみたらこうなった。
~$ nl <<EOF > hello > world > EOF 1 hello 2 world
od - ファイルを 8 進数などの形式で出力
$ cat helloworld.txt hello
デフォルトは8進数
$ od helloworld.txt 0000000 062550 066154 005157 0000006
ascii表示
$ od -t c helloworld.txt 0000000 h e l l o \n 0000006
join / paste - ファイルの横結合
ファイル1
$ cat a.txt 01 aaaa 9999 02 bbbb 8888 11 1111 1111 03 cccc 7777
ファイル2
$ cat b.txt 01 1234 4567 02 9876 6543 99 9999 9999 03 1111 2222
join するとマッチする行のみが出力。あらかじめ結合行でソートされている必要があるためこの例だと最初の2行しか一致しない。
$ join -j 1 a.txt b.txt 01 aaaa 9999 1234 4567 02 bbbb 8888 9876 6543
paste は関係なしに水平方向に結合。
$ paste -d* a.txt b.txt 01 aaaa 9999*01 1234 4567 02 bbbb 8888*02 9876 6543 11 1111 1111*99 9999 9999 03 cccc 7777*03 1111 2222