我在2
中有Linux
个文件,如下所示
file1
test_1
test_3
test_5
test_6
file2
test_1,smoke_test
test_2,rain_test
test_3,sun_test
test_4,wind_test
我想比较这两个文件并删除file1
中file2
中comma(,)
file3
中的表格
需要输出:
test_5
test_6
comm -23 <(sort file1) <(sort file2)
我试过以下
output achieved
test_1
test_3
test_5
test_6
{{1}}
我如何实现我的目标?
答案 0 :(得分:2)
这应该足够了:
$ grep -v -Ff <(cut -d',' -f1 file2) file1 >file3
-v
:否定 - 返回不匹配的条目
-F
:修正了正则表达式匹配而非经典正则表达式
-f
:从file2读取模式
<(cut .... file2)
:命令替换。根据{{1}} =&gt;的结果输入grep -f
file2的第一列
答案 1 :(得分:1)
尝试:
GEOADD users 40.0 -73.0 foo
工作原理:
$ awk -F, 'FNR==NR{a[$1]=1; next} !a[$1]' file2 file1
test_5
test_6
这告诉awk使用逗号作为字段分隔符。
-F,
当读取第一个文件FNR==NR{a[$1]=1; next}
时,我们将值1(true)赋给第一个字段的键下的关联数组FNR==NR
。然后我们跳过其余的命令并跳转到a
行重新开始。
next
如果我们在第二个文件上,如果!a[$1]
不正确,我们会打印该行。换句话说,如果在第一个文件a[$1]
中看到第一个字段 ,我们会从第二个文件file1
打印每一行。