sed日記

与えられたファイルの奇数行目だけ別のコマンドに食わせて処理したい。どうするのがいいのか。

とりあえずsedに挑戦してみた。奇数行目、偶数行目を取り出す。ref. sed メモ

$ cat t.txt | sed -e "n; d"
$ cat t.txt | sed -e "1d; n; d"

できたできた。

奇数行目だけコマンドにパイプで流し込んだ結果を、また元通りくっつけたい。

ファイルを2つ、1行ずつくっつける。 ref. ksh 複数のファイルから中身を1行ずつ取り出して別のファイルに出力したい - 質問・相談ならMSN相談箱

$ paste -d "\n" t.txt t.txt 

ほほう。pasteってデリミタを指定できるのか。

おっと、コマンドに食わせて出力された結果の中の縦棒を空白に置き換えたい。これもsedだな。

結論

$ cat t.txt | sed -e "1d; n; d" > even.txt
$ cat t.txt | sed -e "n; d" | ./a.out | sed -e "s/|/ /g" > odd.txt
$ paste -d "\n" odd.txt even.txt > result.txt

できたできた。めでたしめでたし。