使用awk从两个文件中写一个两列文件

时间:2013-03-14 10:17:50

标签: linux bash shell unix awk

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

1
2
3

4
5
6

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

1 4
2 5
3 6

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

3 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:4)

paste对于给出的示例可以正常工作,但它不能很好地处理可变长度行。一个不太知名的核心工具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

答案 2 :(得分:0)

使用awk

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

说明:

  • NR==FNR将确保我们的第一个操作语句仅针对第一个文件运行。
  • a[FNR]=$0我们将第一个文件插入到以行号
  • 索引的数组中
  • 第一个文件完成后,我们转到第二个操作
  • 这里我们打印第一个文件的每一行以及第二个文件