我发现了如何针对file2删除file1中的数据列表,您可以简单地
grep -viFf remove.txt data.txt > output.txt
但是在很多情况下,这种解决方案对我来说不够好。
data.txt的内容
james-this-is-fake-data
peter-this-is-fake-data
mark-this-is-fake-data
simon-this-is-fake-data
this-is-fake-data-simon
我正在尝试使用以下命令删除所有开始的行:
james
peter
mark
simon
我没有可行的解决方案。因此,我在考虑一种尝试并实现file1(remove.txt)的功能以支持正则表达式的方式,这样我就可以执行以下操作(并且可以正常工作)。
^james.*
^peter.*
^mark.*
^simon.*
我寻求该解决方案的原因是,如果我在fake.txt中包含以下内容,则>]
james peter mark simon
每行将被删除,而output.txt中的内容应为:
this-is-fake-data-simon
TLDR:有没有一种方法可以将正则表达式列表实现为grep -v
我发现了如何针对file2删除file1中的数据列表,您可以简单地grep -viFf remove.txt data.txt> output.txt,但是在很多情况下,这种解决方案对我来说还不够好。 ...
如果您对awk
表示满意,可以请尝试以下操作(仅使用提供的示例进行书写和测试)。>>
awk 'FNR==NR{a[$0];next} !($1 in a)' pattern FS="-" data.txt