查找并删除文件中包含多个模式的行

查找并删除文件中包含多个模式的行

我有一个字符串列表,想要查找并删除文件中包含这些字符串的行。下面列出了字符串列表的一个简短示例。

文件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

相关内容