2013-12-11 33 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

相关问题