Shell以特定格式显示特定记录

时间:2013-10-30 08:14:39

标签: shell scripting

输入文件

GMDCOM.27936 [Tue Oct  1 13:32:40 2013]: Process Request <36812974>
GMDCOM.27936 [Tue Oct  1 13:37:38 2013]: Process Request <36812985>
GMDCOM.27936 [Tue Oct  1 13:37:53 2013]: Process Request <36812986>
GMDCOM.27936 [Tue Oct  1 13:37:54 2013]: Process Request <36812987>
GMDCOM.27936 [Tue Oct  1 13:37:57 2013]: Process Request <36812996>

我希望输出格式如下。

36812974 [Tue Oct  1 13:32:40 2013]
36812985 [Tue Oct  1 13:37:38 2013]
36812986 [Tue Oct  1 13:37:53 2013]

它继续这样直到文件结束。它将如何以上述格式显示所有记录。请帮忙。

2 个答案:

答案 0 :(得分:3)

使用sed你可以说:

sed -r 's/.*(\[.*\]).*<(.*)>/\2 \1/g' filename

对于您的输入,它会返回:

36812974 [Tue Oct  1 13:32:40 2013]
36812985 [Tue Oct  1 13:37:38 2013]
36812986 [Tue Oct  1 13:37:53 2013]
36812987 [Tue Oct  1 13:37:54 2013]
36812996 [Tue Oct  1 13:37:57 2013]

答案 1 :(得分:0)

根据您上面提供的数据 这是一个单行或可以放在脚本“bash”input.data =你的文件名或 您可以管道输出的过程

cat input.data | cut -f2 -d“[”| awk -F“&lt;” '{print $ 2,'[“$ 1}'| tr -d'&gt;'| cut -f1-3 -d”:“