【发布时间】:2023-04-07 14:29:01
【问题描述】:
我有两个文件,每个文件一列
1
2
3
和
4
5
6
我想写一个包含两个元素的唯一文件
1 4
2 5
3 6
我认为使用 awk 应该非常简单。
【问题讨论】:
我有两个文件,每个文件一列
1
2
3
和
4
5
6
我想写一个包含两个元素的唯一文件
1 4
2 5
3 6
我认为使用 awk 应该非常简单。
【问题讨论】:
你可以试试paste -d ' ' <file1> <file2>。 (如果没有-d ' ',分隔符将是制表符。)
【讨论】:
paste 对于给出的示例可以正常工作,但它不能很好地处理可变长度行。一个不错的鲜为人知的 core-util pr 提供了一个更灵活的解决方案:
$ pr -mtw 4 file1 file2
1 4
2 5
3 6
可变长度示例:
$ pr -mtw 22 file1 file2
10 4
200 5
300,000,00 6
既然你问过awk,这是一种方法:
$ awk '{a[FNR]=a[FNR]$0" "}END{for(i=1;i<=length(a);i++)print a[i]}' file1 file2
1 4
2 5
3 6
【讨论】:
使用awk
awk 'NR==FNR { a[FNR]=$0;next } { print a[FNR],$0 }' file{1,2}
NR==FNR 将确保我们的第一个操作语句仅针对第一个文件运行。 a[FNR]=$0 我们将第一个文件插入到以行号为索引的数组中【讨论】: