foo.txtとbar.txtという2つのファイルを作成しました。
foo.txtは次のようになります。foo1 foo2 foo3 foo4 foo5 foo6 foo7 foo8 foo9 foo10
とbar.txt:bar1 bar2 bar3 bar4 bar5 bar6 bar7 bar8 bar9 bar10
では、どのようにこれら2つのテキストファイルをfoobar.txtというテキストファイルに出力し、次のように並べ替えることができますか?
foo1 bar1
foo2 bar2
foo3 bar3
...
管理コンテンツ:人々がマージを提案したため、重複した質問という警告が表示されました。
foo1
foo2
foo3
foo4
foo5
そして
bar1
bar2
bar3
bar4
bar5
同じプロセスです。これを行う必要がある場合は、ここで新しい行の組み合わせに関するトラブルシューティングのテキストを見つけることができます。ユーザー2120893の質問へのリンク
空白のエントリを含むファイルを編集するコマンドを使用するには、awkを使用して表示される以下の回答を使用する必要があります。 「2つのリストを結合する方法」と「間隔リストを新しい行リストに分割する方法」に関する質問は引き続き表示されますが、awk関数を介して2つの間隔リストを分離するためにawkの単一行コマンドを使用しないでください。仕様を通して組み合わせます。立ち上がってください。ついに私の質問に答えてくれたSergiy Kolodyazhnyに感謝します(ただ1つのコマンドだけで答えてくれました!)。私はこの質問に対する答えを探していて、奇妙なウィザードが私たちにその秘訣を示すために介入しました。もう一つの素晴らしい答えをいただいたJohn1024に感謝します。
答え1
次の2つのファイルから始めましょう。
$ cat foo.txt
foo1 foo2 foo3 foo4 foo5 foo6 foo7 foo8 foo9 foo10
$ cat bar.txt
bar1 bar2 bar3 bar4 bar5 bar6 bar7 bar8 bar9 bar10
一緒に入れてください:
$ paste <(tr ' ' '\n' <foo.txt) <(tr ' ' '\n' <bar.txt)
foo1 bar1
foo2 bar2
foo3 bar3
foo4 bar4
foo5 bar5
foo6 bar6
foo7 bar7
foo8 bar8
foo9 bar9
foo10 bar10
または:
$ awk -v RS='[[:space:]]+' 'FNR==NR{a[NR]=$0; next} {print a[FNR],$0}' foo.txt bar.txt
foo1 bar1
foo2 bar2
foo3 bar3
foo4 bar4
foo5 bar5
foo6 bar6
foo7 bar7
foo8 bar8
foo9 bar9
foo10 bar10
答え2
答え3
既に公開されている移行と結合方法の代わりに、以下は結合と移行の方法です。
$ cat foo.txt bar.txt | rs -T
foo1 bar1
foo2 bar2
foo3 bar3
foo4 bar4
foo5 bar5
foo6 bar6
foo7 bar7
foo8 bar8
foo9 bar9
foo10 bar10
答え4
これは次のことで達成できますawk
。
$ awk 'NR==FNR{split($0,a);}NR!=FNR{for(i=1;i<=NF;i++) print a[i],$i}' foo.txt bar.txt
foo1 bar1
foo2 bar2
foo3 bar3
foo4 bar4
foo5 bar5
foo6 bar6
foo7 bar7
foo8 bar8
foo9 bar9
foo10 bar10