sedコマンドで改行(LF)に変換したいと思ったら、trコマンド
ついついテキスト処理で置換を思い浮かべると、sedが思いつきますが、意外と改行をまたぐ処理の場合がうまく動作しない。改行から変換はOKだが、逆パターン(文字列→改行コード)が意外と上手くいかない。他の言語のように簡単に\nで動いて欲しい。
実はそんな人のためにtrコマンド(translate characters)という便利なコマンドがあるので活用する。
#trは標準入力のみ受け付けるコマンドのためパイプで利用する cat some.txt | tr "\n" "," #逆も簡単 cat some.txt | tr "," "\n"
sedで改行を取り扱えなくもないが割りと不便だったりする。
#コマンドライン上から以下を入力する sed some.txt 's/,/\ /g'
ワンラインで実行する場合は、切り替え後の文字列にエスケープとCtrl-V &Ctrl-J(=LF)を流し込めばOK。
ただ基本的にsedはあくまでも「行単位」の処理がメインで、改行をまたぐテキスト置換はawkやtrも組み合わせてやっていこう。