sed [duplicate] を使用してパイプ "|" が最初に表示されるまで削除

sed [duplicate] を使用してパイプ "|" が最初に表示されるまで削除

次のパイプ「|」シンボルの前のすべての文字を削除したいです。以前の質問の提案を試しましたが、私には適していません。例えば。

削除したいシリアル番号=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=ゼロ個以上の文字からなるシーケンスのすべての発生は、次の文字、文字以外の文字、または行の最後の最初の文字まで|(含まれていない)削除されます。|

関連情報