• ベストアンサー

linux テキスト処理

お世話になります。 linuxのテキスト操作でご質問です。 (1) ------------------------- [root@*** ***]# vi test.txt 1 2 3 4 ------------------------ ↓ ↓ (2) -------------------------- [root@*** ***]# vi test.txt 1 2 3 4 ------------------------ 何百行もあるテキストデータを(1)⇒(2)に一発でできる方法は あるでしょうか? 以上、宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • sholmes
  • ベストアンサー率81% (89/109)
回答No.2

# 質問文のようにviで開いた状態からならば、コマンドモードで次のように打ってみてください :%s/\n/ /g # シェルからなら、trが簡単だと思います。 tr '\n' ' ' < test.txt

yaki_82
質問者

お礼

sholmesさま、皆さま ご回答ありがとうございました。trコマンドがしっくりきたので、ベストアンサーにさせていただきました。 その他のみなさんも、お忙しいところありがとうございました。また宜しくお願いいたします。

その他の回答 (4)

回答No.5

まだ閉じられてないので、いくつか考えてみます。 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)
回答No.4

いろいろありますね。 echo `cat test.txt` > out.txt まあ、普通は tr でしょう。

  • ky072
  • ベストアンサー率60% (85/140)
回答No.3

こんな方法はいかがでしょう。 % xargs < test.txt > test2.txt

  • gtx456gtx
  • ベストアンサー率18% (194/1035)
回答No.1

SEDで簡単に出来ます (3) 改行にマッチさせる を参照して下さい http://www.kabipan.com/computer/sed/

関連するQ&A