我有两个文本文件。第一个看起来像这样:
a
b
c
另一个文件如下所示:
1 2
3 4
我想在Linux中使用bash脚本来合并这两个文件,以便第一个文件的每一行都放在第二个文件的所有行旁边,输出如下所示:
a 1 2
a 3 4
b 1 2
b 3 4
c 1 2
c 3 4
任何帮助将不胜感激
答案 0 :(得分:3)
答案 1 :(得分:1)
在纯shell中,您可以执行以下操作:
#Usage: the_script FirstFile SecondFile
while read -r l1; do
while read -r l2 ; do
echo "$l1 $l2"
done <"$2"
done <"$1"
但文件最好不要大,因为shell读取效率不高(它们为每个字节进行系统调用)。
答案 2 :(得分:0)
再试一次awk,它会以与Input_file1相同的顺序给出输出。
awk 'FNR==NR{a[++i]=$0;next} {c[++k]=$0} END{for(q=1;q<=i;q++){for(u=1;u<=k;u++){print a[q],c[u]}}}' Input_file1 Input_file2
答案 3 :(得分:0)
我可能会毫不留情地无情地,但我相信这些任务更适合Perl
或Python.
这是一个Python 2
解决方案:
$ cat 1col.tmp
a
b
c
$ cat 2col.tmp
1 2
3 4
$ cat merge.py
with open("1col.tmp") as col1f:
for c1 in col1f.readlines():
with open("2col.tmp") as col2f:
for c2 in col2f.readlines():
print c1.strip(), c2.strip()
$ python merge.py
a 1 2
a 3 4
b 1 2
b 3 4
c 1 2
c 3 4