Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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
File 如果第一个文件/bash脚本中存在,则按键合并两个文件_File_Bash_Unix_Join_Merge - Fatal编程技术网

File 如果第一个文件/bash脚本中存在,则按键合并两个文件

File 如果第一个文件/bash脚本中存在,则按键合并两个文件,file,bash,unix,join,merge,File,Bash,Unix,Join,Merge,我有两个文件,其中的列按第一列的值排序,我只想在第一列中存在第二列的值时合并它们 第一个文件是这样的 man01 xxx yyy zzz man02 xxx yyy zzz man03 xxx yyy zzz man04 xxx yyy zzz 第二个文件 man01 sss man08 sss 并且期望的输出是 man01 xxx yyy zzz sss man02 xxx yyy zzz man03 xxx yyy zzz man04 xxx yyy zzz 我尝试了join,但要求第

我有两个文件,其中的列按第一列的值排序,我只想在第一列中存在第二列的值时合并它们

第一个文件是这样的

man01 xxx yyy zzz
man02 xxx yyy zzz
man03 xxx yyy zzz
man04 xxx yyy zzz
第二个文件

man01 sss
man08 sss
并且期望的输出是

man01 xxx yyy zzz sss
man02 xxx yyy zzz
man03 xxx yyy zzz
man04 xxx yyy zzz

我尝试了join,但要求第二个文件的值存在于第一个文件中:/

join可以做到这一点,您考虑过
-a
选项吗?它将为a.txt和b.txt中的每个不成对文件行生成一行

join -a1 a.txt b.txt

man01 xxx yyy zzz sss
man02 xxx yyy zzz
man03 xxx yyy zzz
man04 xxx yyy zzz

好吧,这并不是一个优雅的命令行用法之美,但是这个呢

perl -we 'open F1, "<file1.txt"; open F2, "<file2.txt"; my %f2 = map {/(\S+)/ ? ($1=>$_) : ()} <F2>; while (<F1>) { chomp; print; if (/(\S+)/ && exists $f2{$1}) { $f2{$1} =~ /\S+\s+(.*)/ and print " $1"; } print "\n"; }'

perl-我们打开F1,“记录之间有空行吗?对于perl来说似乎是一个不错的工作,不是吗?(如果有人能想出一个合理的方法来使用基本工具解决这个问题,我会印象深刻!)我没有太多时间,但是
通信
粘贴
可以证明很方便,阅读他们的
页面等等,这是
加入
的工作:)哇!是的!成功了!:D thanx!!