sed:从第 n 个字符开始删除,直到在每行中穿过关键字
sed: Remove from nth character until crossing keyword in each line
这里,从第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]
我正在尝试,但不知何故没有完全理解。有人可以帮忙吗?
应该这样做:
awk -F"<4> " '{print substr([=10=],1,37) }' file
<...>-2703 [000] .... 42.930888: 20:18:45.822999]
<...>-2704 [003] .... 42.940897: 20:18:45.832999]
打印前 37
个字符,然后打印 <4>
之后的其余字符
我会使用 sed:
sed -r 's/(.{36}).*<4>//' filename # -E instead of -r for BSD sed
或使用基本的正则表达式语法:
sed 's/\(.\{36\}\).*<4>//' filename
这里,从第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]
我正在尝试,但不知何故没有完全理解。有人可以帮忙吗?
应该这样做:
awk -F"<4> " '{print substr([=10=],1,37) }' file
<...>-2703 [000] .... 42.930888: 20:18:45.822999]
<...>-2704 [003] .... 42.940897: 20:18:45.832999]
打印前 37
个字符,然后打印 <4>
我会使用 sed:
sed -r 's/(.{36}).*<4>//' filename # -E instead of -r for BSD sed
或使用基本的正则表达式语法:
sed 's/\(.\{36\}\).*<4>//' filename