• ベストアンサー

シェルスクリプトにてファイルの結合

お世話になります。 ある3つのファイルfile1 file2 file3 の内容が file1が 111 222 333 file2が aaa ddd bbb eee ccc fff file3が xxx yyy zzz という内容を file4に 111 aaa ddd xxx 222 bbb eee yyy 333 ccc fff zzz という具合に横に結合させて出力させたいのですが どうしていいか分かりません。 sedとかawkを使えばいけそうなんですが 分かる方いらっしゃいませんか??? 宜しくお願いいたします。

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

  • ベストアンサー
  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.2

ではawkで・・・ BEGIN {   while (1) {     for (i = 1; i < ARGC; ++i) {       if (getline < ARGV[i] <= 0) {         exit;       }       printf "%s ", $0     }     print ""   } } を作成しておいて awk -f [上記ファイル] file1 file2 file3 ※awk -f [上記ファイル] file1 file1 file1 のように同じファイルを指定すると、ちゃんと動きません(苦笑)

yuuura
質問者

お礼

アリガトウございます。xcrOSgS2wY様の スクリプトを参考にさせていただきました。 助かりました

その他の回答 (2)

  • nightowl
  • ベストアンサー率44% (490/1101)
回答No.3

こんにちは。paste が使えるなら paste -d ' ' file1 file2 file3 # ' ' の中はスペース で。「-d ' '」がなければタブで連結します(デフォルト)。

参考URL:
http://hp.vector.co.jp/authors/VA003670/bash/unixtool.htm#paste
yuuura
質問者

お礼

アリガトウございます。 pasteコマンドって初めて知りました。。。 かなり楽チンにできそうですね。 ご協力感謝します。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

#perlで open F1,"file1"; open F2,"file2"; open F3,"file3"; until(eof(F1)){ chomp($f1=<F1>); chomp($f2=<F2>); chomp($f3=<F3>); printf "%s %s %s\n",$f1,$f2,$f3; }

yuuura
質問者

お礼

アリガトウございます。 今回はシェルスクリプトで作成させていただきました。 ご協力感謝です。

関連するQ&A

専門家に質問してみよう