• ベストアンサー

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% (4848/10261)
回答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

  • Perlでのテキスト処理について

    Perlでのテキスト処理について質問です。 テキストファイルの中身が下記のようになっています。 【テキスト編集前】 --------------------------------------- test ,abc ,AB ,VI ,SS ,ma ---1行目 test ,abc ,AC ,PI ,VS ,ma ---2行目 test ,abc ,BA ,SS ,VS ,ma ---3行目 test ,abc ,BA ,VI ,VS ,ma ---4行目 test ,cde ,AA ,VI ,SS ,mb ---5行目 test ,cde ,CC ,PE ,VS ,mb ---6行目 test ,cde ,BC ,PI ,SS ,mb ---7行目 test ,cde ,AC ,PI ,SS ,mc ---8行目 --------------------------------------- 2列目(abc/cde)と6列目(ma/mb/mc)が同じ行に対しては 1行にまとめて出力したいと思っています。 この時、1列目、4列目、5列目はマージした形にし (同一文字は一度だけ出力、同一でない文字は/区切りで出力)、 2列目、6列目は同一文字をそのまま出力し、 3列目に関しては、該当する行の先頭行の文字列を 出力したいと思っています。 下記が当方の希望しているPerl実行後の出力結果です。 【テキスト編集後】 --------------------------------------- test ,abc ,AB ,VI/PI/SS ,SS/VS ,ma test ,cde ,AA ,VI/PE/PI ,SS/VS ,mb test ,cde ,AC ,PI ,SS ,mc --------------------------------------- このような編集をPerlで実行したいと思っているのですが、 どのような記述をすれば実行できるのか教えて頂けないでしょうか。 当方、Perlを始めたばかりで基本的なことを 伺っているのかもしれませんが すみませんが、ご了承ください。 宜しくお願いいたします。

  • linux環境にて、ある特定の行に追記

    linux環境にて、ある特定の行に追記 お世話になっております。 linux環境にて、<aaa.txt>と<111.txt>テキストがあった時に <111.txt>の特定箇所に<aaa.txt>の内容を定期的に自動挿入し、ファイルを生成したい場合、どのようなコマンドをスケジューリングすればよいでしょうか? 尚、完成イメージは<kansei.txt>のようになります。 <aaa.txt> ↓内容 abcde <111.txt> ↓内容 1 2 3 4 5 <kansei.txt> ↓内容 1 2 abcde 3 4 5 以上、よろしくおねがいします

  • EXCEL VBAでテキストファイルの特定の場所にデータを書き込む方法

    エクセルVBAのテキスト操作について質問なのですが、以下のようなテキストファイルがあったとしてKey1とKey2の間にデータを書き込みたいのですがどのようにすれば宜しいでしょうか。 宜しくお願い致します。 --- test.txt ここから --- aaaa bbbb Key1 cccc (ここにデータを書き込みたいです。) Key2 eeee --- test.txt ここまで ---

  • テキストファイルの編集

    以前にもperlでのプログラミングについて質問させて頂いた者です。 前回と被る所があるのですがちょっと複雑で、私の手に負えないので質問させて頂きます。 よろしくお願いします。 データファイルAからデータを取得して、テキストファイルBの内容の一部を取得したデータで書き換えるという操作を行うプログラムを作りたいです。 具体的には、 データファイルA[A.txt]の中身 100 111  200 222 300 333 400 444 テキストファイルB[B.txt] 1st step 文字列1 start="123" end="134" 2nd step 文字列2 start="234" end="245" 3rd step 文字列3 start="345" end="356" 4th step 文字列4 start="456" end="467" という二つのファイルを読み込み、B.txtの""で囲まれた部分を、A.txtで取得したデータで置き換えるような操作を行いたいのですが・・。 A.txtの一行目で取得したデータをB.txtの1stステップの始まりと終わりの値として置き換え、それを二行目は2ndと同様の操作を行うようなプログラムを作りたいです。 もともとこのような操作を行いたくて前回のような質問をし、それを参考にし今日まで考えましたがやはり難しく、また頼りたいと思います。。 どうかよろしくお願いします。

    • ベストアンサー
    • Perl
  • 外部テキストが読み込めません

    はじめまして FLASHをつい1週間まえからはじめました超初心者です。 こちらの過去ログをみてやってみたのですが、うまくいかなかったので質問させてください。 外部テキスト(test.txt)をLoadVarsクラスで読み込み、 その中の定義(text=…)をMC(インスタンス名はtext)に書き出したいのですが、何度やっても書き出せません。 アクションスクリプトは ――――――――――――――――― System.useCodepage = true; myLoadVars = new LoadVars(); myLoadVars.onLoad = function(bSuccess) { if (bSuccess) { _root.text = this.text; } }; myLoadVars.load("test.txt"); ―――――――――――――――― 以上のようになっています。 わかる方いましたらよろしくお願いします。 質問初めてですので、今後のためにも言葉が足りなかったりしたら遠慮なく突っ込んでください。

    • ベストアンサー
    • Flash
  • linuxコマンド/複数のディレクトリに対して一括でファイルをコピー

    linuxコマンドについて質問です。 ある特定の1つのファイルを、複数のディレクトリに対して一括コピーはできなのでしょうか? root La Lb Lc -test.txt ↓実行後 root La-test.txt Lb-test.txt Lc-test.txt -test.txt root以下にあるファイル test.txt(root/test.txt)を root以下にあるディレクトリa,b,cにコピーしたいのです。 よろしくお願いいたします

  • linuxでの使いやすいテキストエディタを教えてください

    私はサーバールームにあるlinuxサーバーにwindowsのsshクライアントでリモートログインして仕事をすることが多いのですが、そのような環境でみなさんはテキストの編集にそのようなエディターをお使いでしょうか? 標準だとviが使えますが、私はwindowsにどっぷりと使っているせいか、viにはどうしても慣れることができません。ですから、小さな設定ファイルのようなもの以外は、一旦ダウンロードして、windows上のエディターで編集してからアップロードすることが多いです。でも、これはこれで手順が面倒です。FreeBSDだとeeが使えて、これは昔のPC-9801のMIFESに似た使いかってでけっこう使えました。linuxでeeを使うにはどうしたらいいでしょうか? あるいは、他にwindowsに体が毒されてしまった人間でも使いやすいエディターは無いでしょうか?

  • linuxコマンドで以上以下

    教えてくださいl 以下のように数字だけが入ってているテキストファイル、 number.txtがあったとします --number.txt-- 10 20 30 40 50 -------------- ここからlinuxコマンドだけを使用し、20以上の数値だけを 抽出する方法はありますでしょうか? なお、LinuxはRedHat系の使用しています よろしくお願い致します。

  • テキストデータの処理について

    お世話になります。 入出力ソースを作成したいのですが 下記の例のようなデータに適している クラス・メソッドはありますでしょうか。 勉強できるサイトをご存知の方 もしくはサンプルデータや解説等などあるサイト等 ありましたらアドバイス頂けると助かります。 どうぞよろしくお願いいたします。 例 テキストデータ 出力前 1行目 2行目 3行目 4行目 5行目 6行目 出力後 (1レコード目)1行目,2行目 (2レコード目)3行目,4行目 (3レコード目)5行目,6行目

    • ベストアンサー
    • Java
  • テキストファイルのデータの追加

    二つのテキストファイルを結合というより新規のデータだけを追加したいのですが、そのようなコマンドはあるのでしょうか? 今は copy a.txt+b.txt c.txt copy c.txt b.txt を動かした後、テキストbを開いてテキストaとテキストbの重複しているデータを手作業で消しています。 また、上の2行のコマンドを1行にすることは可能でしょうか?