删除包含字符串后跟x个数字的行

时间:2016-06-29 16:39:57

标签: linux bash grep

您好我想从csv中删除包含字符串vol后跟2个或更多数字的行。

示例数据:

2454564, Stage Mechanics vol 4   8 9, 121545, 454545454
24545454, Dancing on ice vol 5, 454554, 45454545
5454545, Who is the man, 545456454, 4545454
8785648654, year of the Panda vol 89 12, 545454, 545454

期望的输出:

24545454, Dancing on ice vol 5, 454554, 45454545
5454545, Who is the man, 545456454, 4545454

我知道我可以使用:

cat $csv1 | grep -vi "vol" > $newcsv

但显然这只会删除带有“vol”的行 - 如何将后面跟着2个或更多数字的规则合并到此代码中?

由于

1 个答案:

答案 0 :(得分:3)

你可以使用这个grep:

grep -Ev '\bvol([[:blank:]]+[[:digit:]]+){2}' file

24545454, Dancing on ice vol 5, 454554, 45454545
5454545, Who is the man, 545456454, 4545454

模式([[:blank:]]+[[:digit:]]+){2}将匹配vol之后由空格/制表符分隔的至少2个数字。