2017-04-10 20 views
1

我有低於此爲輸出從給定的線在bash

2017-04-10 12:23:00.307411 IP 124.108.16.209.443 > 192.168.180.3.44526: tcp 1209  
2017-04-10 12:23:00.836184 IP 192.168.180.3.43095 > www.facebook.com.443: tcp 303 
2017-04-10 12:23:09.948709 IP www.facebook.com.443 > 192.168.180.3.47172: tcp 38  
2017-04-10 12:23:09.986789 IP 192.168.180.31.47172 > www.facebook.com.443: tcp 0  

,我想這樣的輸出刪除特定的東西,

2017-04-10 12:23:00 IP 192.168.180.3 > www.facebook.com 
2017-04-10 12:23:09 IP 192.168.180.31 > www.facebook.com 

和重要的要刪除與字母開頭線在IP字之後也刪除那個不以192.168.180開頭的行IP這個詞,基本上從上面的例子我只要第二和第四行作爲輸出。

+1

什麼你親自嘗試一下? – Inian

+0

而不是_這些_和_not那些,_get那些我想_怎麼樣? 'grep「IP 192.168.180」文件「 –

+0

我沒有發現上述情況。 –

回答

1

到後IP除去與字母開始行字也 刪除該行不開始192.168.180IP

AWK方法:

awk '$4!~/^[[:alpha:]]/ && $4~/^192\.168\.180/' file 

空間是AWK默認字段分隔符。

$4!~/^[[:alpha:]]/
        $4 - 第四字段
        !~ - 不匹配
        /^[[:alpha:]]/ - 正則表達式,是指 「開始與字母字符」

&& - 布爾「和」操作符「 ATOR。
boolean1 & & boolean2 - TRUE,如果boolean1boolean2是真實的。 -

$4~/^192\.168\.180/如果第四場與192.168.180


其他方法開始相匹配的線:

要去除某些列的不需要的部分使用下面的方法:

awk -v p=".[^.]+$" '$4!~/^[[:alpha:]]/ && $4~/^192\.168\.180/ 
    {$7=$8="";for(i=2;i<=6;i+=2)gsub(p,"",$i);print}' file 

Th Ë輸出:

2017-04-10 12:23:00 IP 192.168.180.3 > www.facebook.com 
2017-04-10 12:23:09 IP 192.168.180.31 > www.facebook.com 
+0

謝謝羅馬人,它幫助我消除了線條。你能解釋我這個命令嗎? –

+0

@VishalRabadiya,不客氣 – RomanPerekhrest

+0

可以請你解釋一下這個命令。 @RomanPerekhrest –

0

你可以這樣嘗試的sed的東西,它只是語法:

sed -e '/pattern here/ { N; d; }' 

N和d是命令,你可以使用。

此刪除1條線圖案之後(包括與所述圖案的線):

圖案=您的字符串

sed -e '/pattern/,+1d' file.txt 
1

我 - - 要刪除線,與IP字後的字母,也手段(主要是)開始爲保持與數字開始, 刪除線,這樣做行同樣的事情在IP字段意味着保留與IP 192.168.180在一起的線路並且基本上使第一個要求過時而不是以192.168.180開始。 man grep

DESCRIPTION 
     grep searches the named input FILEs for lines containing a match to the 
     given PATTERN. - - By default, grep prints the matching lines. 

嘗試:

grep "IP 192.168.180" file 
2017-04-10 12:23:00.836184 IP 192.168.180.3.43095 > www.facebook.com.443: tcp 303 
2017-04-10 12:23:09.986789 IP 192.168.180.31.47172 > www.facebook.com.443: tcp 0 
+1

試過這也是你是對的,thanx @James Brown –