我制作了两个文件,foo.txt 和 bar.txt
foo.txt 看起来像这样:foo1 foo2 foo3 foo4 foo5 foo6 foo7 foo8 foo9 foo10
和 bar.txt:bar1 bar2 bar3 bar4 bar5 bar6 bar7 bar8 bar9 bar10
那么如何获取这两个文本文件并将它们输出到名为 foobar.txt 的文本文件中,并将它们排序为
foo1 bar1
foo2 bar2
foo3 bar3
...
管理员内容:我收到关于这是重复问题的警告,因为人们建议合并
foo1
foo2
foo3
foo4
foo5
和
bar1
bar2
bar3
bar4
bar5
是同样的过程。如果您必须这样做,您可以在此处找到新行组合上的问题解决文本:链接到用户2120893的问题
要使用一个命令来编辑间隔项目的文件,您需要使用我在下面使用 awk 标记的答案。我不断看到“如何组合两个列表”和“如何将间隔列表分离成新行列表”的问题,但从来没有使用 awk 的单行命令通过 awk 函数分离两个间隔列表,然后通过 awk 指定将它们组合起来。非常感谢 Sergiy Kolodyazhny 最终回答了我的问题(并且只使用一个命令来完成它!)。我一直在寻找这个问题的答案,一个 awk 向导介入向我们展示了诀窍。感谢 John1024 的另一个很好的答案。
答案1
让我们从这两个文件开始:
$ 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