Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用awk从两个文件中写入两列文件_Linux_Bash_Shell_Unix_Awk - Fatal编程技术网

Linux 使用awk从两个文件中写入两列文件

Linux 使用awk从两个文件中写入两列文件,linux,bash,shell,unix,awk,Linux,Bash,Shell,Unix,Awk,我有两个文件,每个一列 1 2 3 及 我想用这两个元素编写一个唯一的文件 1 4 2 5 3 6 我认为使用awk应该非常简单。您可以尝试粘贴-d'。(如果没有-d'分隔符将是制表符。)粘贴对于给定的示例可以正常工作,但它不能很好地处理可变长度的行。对core utilpr了解不多,提供了更灵活的解决方案: $ pr -mtw 4 file1 file2 1 4 2 5 3 6 可变长度示例: $ pr -mtw 22 file1 file2 10 4 200

我有两个文件,每个一列

1
2
3

我想用这两个元素编写一个唯一的文件

1 4
2 5
3 6

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

您可以尝试
粘贴-d'
。(如果没有
-d'
分隔符将是制表符。)

粘贴对于给定的示例可以正常工作,但它不能很好地处理可变长度的行。对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'{a[FNR]=a[FNR]$0'}END{for(i=1;i使用
awk

awk 'NR==FNR { a[FNR]=$0;next } { print a[FNR],$0 }' file{1,2}
说明:
  • NR==FNR
    将确保我们的第一个操作语句仅针对第一个文件运行
  • a[FNR]=$0
    这样,我们将第一个文件插入到一个数组中,该数组在行号处建立索引
  • 第一个文件完成后,我们将执行第二个操作
  • 在这里,我们打印第一个文件的每一行以及第二个文件

注意:如果文件长度不同或超过两个文件,此操作将失败。
awk 'NR==FNR { a[FNR]=$0;next } { print a[FNR],$0 }' file{1,2}