2つのスペースで区切られたリストを並べ替えます。 [重複]

2つのスペースで区切られたリストを並べ替えます。 [重複]

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

おすすめ記事