2014年04月17日

改行ありのtextファイルを、改行の替わりに「¥n」に変換しつつ、1行にする

とりあえず、ぐぐってみると、こんなのをみつけました。

http://oshiete.goo.ne.jp/qa/2268805.html

sedを用いた処理で質問があります。

出力結果の改行を置換して一列として表示しようとしているのですが、どうもうまくいきません。

(perlは敢えて使いません)



例えば、以下のようなファイルがあるとして、



$ cat hoge.txt

hoge

boo

bar



この出力結果を加工して、「hoge boo bar」のように、

改行をスペースに置換して一行として表示したい場合は、どのようにすれば良いでしょうか?

(ここまで)



で、ベストアンサーになっていたものは、



しかし、改行を削るだけだったらsedを使うまでもなく

cat hoge.txt |tr -d '\012'

改行文字を空白に変えるのなら

cat hoge.txt |tr '\012' ' '

で済みますが。

(ここまで)



うわ。

tr って、変換にも使えるんだ。

知らんかったわ・・・。



だけど、やりたいことは、

改行を「¥n」に変えることなんだよね。



1.txtの中身は以下のようなものだと仮定する。

aaa

bbb

ccc



で、こんな風にしてみた。



cat 1.txt | tr '\012' ' ' > $$ | sed 's/ /\\n/g' $$







すると、これができる。



aaa\nbbb\nccc\n



これで、OK。



スマートじゃないので、こうしてみた。(そもそも、中間ファイルいらないし)



cat 1.txt | tr '\012' ' ' | sed 's/ /\\n/g'



註:\\となっているのは、¥をエスケープしているからである。









これができると、<BR>にでも変換できる。

ただし、<と>とは、やはりエスケープしなければならない。

こんな感じ。



cat 1.txt | tr '\012' ' ' | sed 's/ /<br \/>/g'






「ユニブロのITマネージメント実験室」のトップに戻る

posted by ユニブロ at 20:12 | 東京 ☀ | Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック