删除直到第一次出现管道“|”使用 sed

删除直到第一次出现管道“|”使用 sed

我想删除下一个管道“|”之前的所有字符象征。我尝试了对之前问题的建议,但这对我不起作用。举个例子。

我想删除序列号=123但是序列号是动态的,并不总是等于 123,它可能等于 934294。我可以使用“s/|sequence=123//g”或“s/|sequence=...//g”将其删除但是我希望能够删除下一个管道“|”之前的所有字符。

输出:

2021-03-22T12:00:51.990368-04:00 8.8.8.8 time=1616428842|action=Detect|ifdir=inbound|origin=8.8.8.8|originsicname=CN\=Internet,O\=test|sequencenum=123|dst=1.1.1.1|proto=6|s_port=2231|service=80|src=9.9.9.9|[email protected]|src_user_name=user|[email protected]|

期望的输出:

2021-03-22T12:00:51.990368-04:00 8.8.8.8 time=1616428842|action=Detect|ifdir=inbound|origin=8.8.8.8|originsicname=CN\=Internet,O\=test|dst=1.1.1.1|proto=6|s_port=2231|service=80|src=9.9.9.9|[email protected]|src_user_name=user|[email protected]|

答案1

sed 's/|sequence=[^|]*//g'

将删除所有出现的|sequence=0 个或多个字符序列,直到|(但不包括)下一个|字符或非字符或行尾(以先到者为准)。

相关内容