Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.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 使用公共列组合两个文件_Linux_Bash_Awk_Sed - Fatal编程技术网

Linux 使用公共列组合两个文件

Linux 使用公共列组合两个文件,linux,bash,awk,sed,Linux,Bash,Awk,Sed,我有两个文件,如下所示 第一个文件: FileA FileB FileC FileA 2 FileC 2 第二个文件: FileA FileB FileC FileA 2 FileC 2 我希望第三个文件如下所示: FileA FileA 2 FileB FileC FileC 2 基本上我是在做选择性粘贴。我愿意接受任何awk或sed解决方案,以实现所需的结果。使用awk,您可以: awk 'FNR == NR{a[$1]=$0; next} {print $0, a[$1]}' f

我有两个文件,如下所示

第一个文件:

FileA
FileB
FileC
FileA 2
FileC 2
第二个文件:

FileA
FileB
FileC
FileA 2
FileC 2
我希望第三个文件如下所示:

FileA FileA 2
FileB
FileC FileC 2
基本上我是在做选择性粘贴。我愿意接受任何awk或sed解决方案,以实现所需的结果。

使用awk,您可以:

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

FileA FileA 2
FileB
FileC FileC 2
这是join的工作:

join -a1 -o 1.1 2.1 2.2 file1 file2

可能的重复是更好的解决方案。使用
awk
就像重新发明轮子。或者将通用计算机(awk)用于嵌入式控制器(join)。@alvits:可能是这种情况,但awk解决方案也能够处理未排序的文件,并且不需要掩码(如果第二个文件有更多字段,这可能很有用)。