- ベストアンサー
linux テキスト処理
お世話になります。 linuxのテキスト操作でご質問です。 (1) ------------------------- [root@*** ***]# vi test.txt 1 2 3 4 ------------------------ ↓ ↓ (2) -------------------------- [root@*** ***]# vi test.txt 1 2 3 4 ------------------------ 何百行もあるテキストデータを(1)⇒(2)に一発でできる方法は あるでしょうか? 以上、宜しくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
# 質問文のようにviで開いた状態からならば、コマンドモードで次のように打ってみてください :%s/\n/ /g # シェルからなら、trが簡単だと思います。 tr '\n' ' ' < test.txt
その他の回答 (4)
- MillenniuM
- ベストアンサー率58% (42/72)
まだ閉じられてないので、いくつか考えてみます。 1. #1さんのリンク先を読んで、sedで $ cat test.txt | sed ":a;N;s/\n/ /;t a" 2. awkで $ cat test.txt | awk 'NR==1{l=$0}NR!=1{printf "%s ",l;l=$0}END{print l}' 3. pasteで $ cat test.txt | paste -sd' ' 4. perlで $ cat test.txt | perl -pe "s/\n/ /" | perl -pe "s/ $/\n/" 5. rubyで $ cat test.txt | ruby -e 'puts ARGF.read.lines.map(&:chomp).join " "'
- notnot
- ベストアンサー率47% (4900/10358)
いろいろありますね。 echo `cat test.txt` > out.txt まあ、普通は tr でしょう。
- ky072
- ベストアンサー率60% (85/140)
こんな方法はいかがでしょう。 % xargs < test.txt > test2.txt
- gtx456gtx
- ベストアンサー率18% (194/1035)
SEDで簡単に出来ます (3) 改行にマッチさせる を参照して下さい http://www.kabipan.com/computer/sed/
お礼
sholmesさま、皆さま ご回答ありがとうございました。trコマンドがしっくりきたので、ベストアンサーにさせていただきました。 その他のみなさんも、お忙しいところありがとうございました。また宜しくお願いいたします。