针对file2删除file1中的数据(但使用正则表达式)

问题描述 投票:0回答:1

我发现了如何针对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,但是在很多情况下,这种解决方案对我来说还不够好。 ...

regex grep cygwin gnu
1个回答
0
投票

如果您对awk表示满意,可以请尝试以下操作(仅使用提供的示例进行书写和测试)。>>

awk 'FNR==NR{a[$0];next} !($1 in a)' pattern FS="-" data.txt
© www.soinside.com 2019 - 2024. All rights reserved.