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=0개 이상의 문자로 이루어진 시퀀스 의 모든 발생은 다음 문자, 문자가 아닌 문자 또는 줄의 끝 중 먼저 오는 문자 까지 |(포함하지 않음) 제거됩니다 .|

관련 정보