我有一个字符串列表,想要查找并删除文件中包含这些字符串的行。下面列出了字符串列表的一个简短示例。
文件S
1Mo 32,33 2Mo 7,26 2Mo 7,27 2Mo 7,28
该文件的一个简短示例如下。
文件A
1Mo 32,33 我爱你。 2Mo 7,26 我喜欢你。 嗨 1,2 这不太有趣。 Ab 3,4 我很蠢。
我的预期输出是这样的:
嗨 1,2 这不太有趣。 Ab 3,4 我很蠢。
我尝试使用以下命令,不幸的是我失败了:
grep -f 文件 S 文件 A|awk '{print $0}'
我搜索了相关问题,但大多数都集中于删除具有一种特定模式的行。我有人知道如何处理这个问题吗?谢谢。
答案1
在 中AWK
,代码为:
NR == FNR {
line[$0]++;
next;
}
!line[$1" "$2]
作为单行:
awk 'NR == FNR {line[$0]++; next;} !line[$1" "$2]' file_S file_A
答案2
$ grep -vF -f file_S file_A
Hi 1,2 This is not so fun.
Ab 3,4 I am stupid.
这使用字符串 in来获取不包含任何这些字符串的file_S
行。file_A
-v
反转匹配的含义,以便通过没有匹配的行,并-F
告诉grep
将字符串视为固定串而不像正则表达式。
答案3
awk -F "|" '{if($1 != "1Mo") if($1 != "2Mo" ) { print $0;}}' inputFile > OutputFile