如果行包含4列中的数字,则从文件中删除整行

问题描述:

我在bash中颇为新颖,并且遇到了需要解析大文件的情况,但并非所有事情对我都很有意思。该文件包含以'。'分隔的数据列表。分隔符,列数是不同的。如果行包含4列中的数字,则从文件中删除整行

我想从输出中排除以下模式:如果前4列包含数字。

下面是一个例子(仅第一行应从输出中排除):

123.123.123.123.abc.abc.abc 
123.123.123.abc.abc 
abc.abc.123.123.abc 

我一直在寻求用awk一些解决方案,但没有成功为止。

非常感谢您的帮助。

+0

不是真的..感谢答复。下面提到的grep解决方案适用于我。再次感谢。 –

的grep解决方案:

grep -Ev '^([0-9]+\.){4}' file 

输出:

123.123.123.abc.abc 
abc.abc.123.123.abc 
+0

非常感谢,它的作品就像一个魅力! –

+0

@no_one,不客气 – RomanPerekhrest

+1

谢谢= upvote/accept。 – choroba

能否请您尝试以下,让我知道,如果这可以帮助你。

awk -F"." 'match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/){next} 1' Input_file 

输出如下。

123.123.123.abc.abc 
abc.abc.123.123.abc 

说明:使得现场隔离板,DOT,然后用awk的匹配功能,寻找具有数字在他们连续4场,因此,如果是,则使用下一个(这将跳过所有的()。进一步的陈述)。然后在这里提及1以便从具有匹配图案的线条中打印出线条。

+0

是的,它也可以工作!谢谢!不幸的是,由于缺乏代表不能赞成.. –

+0

np,很高兴它帮助你。每当你得到回购/时间,你就可以做到。 – RavinderSingh13

在awk中你可以使用两种选择小于或等于这样的:

awk -F. 'NF<6' file or 
awk -F. 'NF==5' file 

123.123.123.abc.abc 
abc.abc.123.123.abc