2013-12-11 35 views
-1

我正在搜索一行命令以搜索'myfile.txt'中的幾個單詞,並且如果匹配模式,則剪切該單詞並將其打印到新文件中。搜索特定字段並將它們打印到unix中的新文件中

myfile.txt。

162.23.55.222 - - [07/Dec/2013:00:40:35 +0000] 0.033 POST /view/SBEventListComponentController?componentUid=comp_00008OM8 HTTP/1.1 200 77282 Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11 http://sportsbeta.ladbrokes.com/homepage 6476CC940C83EDF031FF2564EE108993.ecomprodsw012 
162.16.87.1973 - - [07/Dec/2013:00:40:34 +0000] 0.131 POST /view/SBEventListComponentController?componentUid=comp_000080KW HTTP/1.1 200 82707 Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11 http://sportsbeta.ladbrokes.com/homepage 6476CC940C83EDF031FF2564EE108993.ecomprodsw012 
162.23.22.542, 10.32.30.1 - - [07/Dec/2013:00:40:35 +0000] 0.224 GET /view/content/homepage HTTP/1.1 200 66233 Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11 - 6476CC940C83EDF031FF2564EE108993.ecomprodsw012 

我的output.txt必須包含。

162.23.55.222 07/Dec/2013:00:40:35 http://sportsbeta.ladbrokes.com/homepage 6476CC940C83EDF031FF2564EE108993.ecomprodsw012 
162.16.87.1973 07/Dec/2013:00:40:34 http://sportsbeta.ladbrokes.com/homepage 
162.23.22.542, 10.32.30.1 07/Dec/2013:00:40:35 

如何搜索更多模式並將其重定向到其他文件。 我不明白爲什麼這個投票。我試過cut,grep和sed命令。但是沒有得到預期的結果。 在此先感謝。

+0

您確實需要最後一個字段「6476 ...」,它是出現在「myfile.txt」的第1行和第2行中,只出現在「output.txt」的第1行中? – Armali

回答

0

下面是如何或多或少的做我認爲你在問什麼。輸出示例的第一行包括行末尾的字段,但第二行沒有 - 我無法立即明白爲什麼

perl -l -n -a -e '($u)=/(http:\S+)/; if ($F[0] =~/,$/) { print "@F[0..1] ", substr($F[4],1) } else { print $F[4]," ", substr($F[3],1)," ", $u}' infile.txt infile.txt > outfile.txt 
+0

謝謝@Vorsprung。在第一個字段中,如果字符是',',我需要繼續並將其作爲字段1。像第三行一樣。任何想法我需要改變? – thej

+0

抱歉不知道,你的解釋對我沒有意義:) – Vorsprung

+0

myfile.txt的第三行有兩個IP地址。通過上面的代碼我缺少一個IP地址,我得到162.23.22.542,07/Dec/2013:00:40:35。如何獲得第三行的IP地址? – thej

相關問題