나는 이것을 가지고있다:
00:05:40.005 id=32214483 Src=PIPE <[email protected]> (received) [email protected] relayed (1234 bytes)
나는 이것을 달성해야합니다 :
00:05:40.005 id=32214483 [email protected] <[email protected]> (received) [email protected] relayed (1234 bytes)
참고 - 파일의 다른 데이터가 필요한 올바른 형식을 갖고 있기 때문에 데이터를 "열별로" 교환하여 전체 파일에 적용할 수 없습니다. Src=PIPE의 모든 인스턴스를 <> 기호 없이 다음 열의 데이터로 대체하고 싶습니다.
답변1
나는 Perl oneliner가 당신이 원하는 것을 할 것이라고 믿습니다:
perl -i.bak -pe 's/Src=PIPE\s+<(\w+?@\w+?\.\w+?)>\s+?/Src=$1 <$1> /;' [file(s)]
꺾쇠 괄호로 묶인 요소가 이메일 주소인지 확인하지 않고 이를 수행하는 또 다른 방법은 다음과 같습니다.
perl -i.bak -pe 's/Src=PIPE\s+<(.*?)>\s+?/Src=$1 <$1> /;' [file(s)]
-i.bak 명령줄에서 처리된 모든 파일을 백업합니다.
답변2
확인하다:
$ sed 's/PIPE <\(.*\)>/\1 <\1>/g' -i file.txt