4

我有两个文件,每个文件一列

1
2
3

4
5
6

我想编写一个包含两个元素的唯一文件

1 4
2 5
3 6

我认为使用 awk 应该非常简单。

4

3 回答 3

8

你可以试试paste -d ' ' <file1> <file2>。(没有-d ' '分隔符将是制表符。)

于 2013-03-14T10:22:40.460 回答
4

paste对于给出的示例可以正常工作,但它不能很好地处理可变长度的行。一个很好的鲜为人知的 core-utilpr提供了一个更灵活的解决方案:

$ 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
于 2013-03-14T10:50:48.383 回答
0

使用awk

awk 'NR==FNR { a[FNR]=$0;next } { print a[FNR],$0 }' file{1,2}

解释:

  • NR==FNR将确保我们的第一个操作语句仅针对第一个文件运行。
  • a[FNR]=$0有了这个,我们将第一个文件插入到以行号为索引的数组中
  • 一旦第一个文件完成,我们将进行第二个动作
  • 在这里,我们打印第一个文件的每一行以及第二个文件
于 2013-03-14T11:27:20.680 回答