使用打印两个不同的文件字段

时间:2016-03-15 10:14:48

标签: linux shell awk

我有一个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

我的输出:

665135085

必需的输出:

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

请帮助。

1 个答案:

答案 0 :(得分:1)

这是sed的作业:

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

如果你有一个奇怪的sed不支持"扩展"正则表达式(由-E标志启用),您必须在每次打开和关闭之前添加\ paren:

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