我有两个不均匀列的文件,我想比较这两个文件,并从file1中删除匹配的行
档案1:
nt1 ID420
nt1 ID42
nt56 ID6008
ht44 ID555
lt12 ID34
lt12 ID3434
ntt56 ID667
klll ID87693
Run Code Online (Sandbox Code Playgroud)
文件2
nt23 ID42
ht44 ID555
lt12 ID3434
Run Code Online (Sandbox Code Playgroud)
期望的输出:
nt1 ID420
nt56 ID6008
lt12 ID34
ntt56 ID667
klll ID87693
Run Code Online (Sandbox Code Playgroud)
我在之前的帖子中使用了以下命令,但结果并不完全匹配,而是采用匹配的初始字符.我没有太多关于awk命令的exp,我需要awk单行命令或sed或类似的shell脚本来获取此输出.提前谢谢你:
awk -FS=" " 'NR==FNR {b[$0]; next} {for (x in b) if($0 ~ x) next;print $0}' file2 file1 > outputfile
Run Code Online (Sandbox Code Playgroud)
这将是最快的:
grep -vFxf file2 file1
Run Code Online (Sandbox Code Playgroud)
用awk:
awk 'NR==FNR {exclude[$0];next} !($0 in exclude)' file2 file1
Run Code Online (Sandbox Code Playgroud)
如果您不关心输出是否已排序,那么这comm是用于:
comm -23 <(sort file1) <(sort file2)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12763 次 |
| 最近记录: |