2016-03-15 60 views
0

我有一個LOG:打印兩個使用文件的不同領域

100.100.100.100 - - [08/Mar/2016:07:53:33 +0100] GET /rbt/Utils.do?receiverID=665135085&action=send_sms&senderID=22077&dtocRequest=n&smsText=Tu+PIN+es+95934&isPostMethod=n&subscriberID=665135085&useSameResForConsent=n&mode=WEB 

我需要顯示只有兩個字段。日期和用戶ID字段(僅限數字)。

我想下面的命令:

cut -d" " -f4,7 input.txt | awk -F"subscriberID=" '{print $2}' input.txt | cut -c0-9 

我的輸出:

​​

需要的輸出:

08/Mar/2016:07:53:33 +0100 665135085 

請幫助。

回答

1

這是sed工作:

sed -E 's/.*\[([^]]*)\].*subscriberID=([0-9]*).*/\1 \2/' input.txt 

如果你有一個奇怪的sed不支持「擴展」的正則表達式(由-E標誌啓用),您的每個前添加\開幕式和閉幕式:

sed 's/.*\[\([^]]*\)\].*subscriberID=\([0-9]*\).*/\1 \2/' input.txt 
+0

dint work。 :( [[email protected]〜] $ sed -E's /.*\[([^]]*)\].* subscriberID =([0-9] *)。*/\ 1 \ 2 /'input.txt sed:無效選項-E –

+0

你有哪個版本的'sed'?所有的「現代」sed版本都有它,試試'man sed'或'which sed',或者告訴我哪個你可以使用的操作系統/發行版 – alexis

+0

(但是,首先,只是嘗試不使用'-E' ...你永遠不會知道:-))。 '-E'只是啓用「現代」的正則表達式,即大約30歲...... – alexis

相關問題