2017-09-26 82 views
-1

我在bash中頗爲新穎,並且遇到了需要解析大文件的情況,但並非所有事情對我都很有意思。該文件包含以'。'分隔的數據列表。分隔符,列數是不同的。如果行包含4列中的數字,則從文件中刪除整行

我想從輸出中排除以下模式:如果前4列包含數字。

下面是一個例子(僅第一行應從輸出中排除):

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

我一直在尋求用awk一些解決方案,但沒有成功爲止。

非常感謝您的幫助。

+0

不是真的..感謝答覆。下面提到的grep解決方案適用於我。再次感謝。 –

回答

1

的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

0

能否請您嘗試以下,讓我知道,如果這可以幫助你。

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

0

在awk中你可以使用兩種選擇小於或等於這樣的:

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

123.123.123.abc.abc 
abc.abc.123.123.abc 
相關問題