sed:从第n个字符中删除,直到每行中的cross关键字

时间:2015-04-09 15:01:57

标签: string awk sed

此处,从第37个字符开始直到越过关键字,即< 4> 要删除。以下是示例。

<...>-2703  [000] ....    42.930888: msm_vdec_dqbuf: <4> 20:18:45.822999]
<...>-2704  [003] ....    42.940897: create_pkt_cmd_session_ftb: <4> 20:18:45.832999]

<...>-2703  [000] ....    42.930888: 20:18:45.822999]
<...>-2704  [003] ....    42.940897: 20:18:45.832999]

我正在尝试,但不知何故没有完全得到。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

这应该做:

awk -F"<4> " '{print substr($0,1,37) $2}' file
<...>-2703  [000] ....    42.930888: 20:18:45.822999]
<...>-2704  [003] ....    42.940897: 20:18:45.832999]

打印第一个37个字符,然后打印<4>

之后的其余字符

答案 1 :(得分:1)

我使用sed:

sed -r 's/(.{36}).*<4>/\1/' filename    # -E instead of -r for BSD sed

或者使用基本的正则表达式语法:

sed 's/\(.\{36\}\).*<4>/\1/' filename