메시지 문자열이 끝이 없으면 여러 줄을 병합해 보세요. 또한 첫 번째 줄을 제외한 모든 줄에서 접두사를 제거하고 싶습니다.
입력하다:
b929e3e1-29db this is a long message that
abc074df-48a1 is continued onto multiple
dfd4c683-ab48 lines#EOM
ff513a72-570d this is a short message#EOM
980d10aa-bbed another short message#EOM
산출:
b929e3e1-29db this is a long message that is continued onto multiple lines
ff513a72-570d this is a short message
980d10aa-bbed another short message
명령줄을 통해 사용할 수 있는 일반 도구를 사용하는 것이 가장 좋습니다. (예: awk, sed)
답변1
GNU awk
1 사용
gawk -vRS='#EOM\n' '{gsub(/\n[[:xdigit:]-]+/,"");} {$1=$1} 1' file.txt
- 레코드 구분
#EOM
기호 뒤에 개행 문자가 오도록 설정하세요. - 개행 문자 앞의 16진수 및 하이픈 시퀀스를 제거하면 이전 RS가 개행 문자를 먹었으므로 각 레코드의 초기 시퀀스가 유지됩니다.
$1=$1
기본 출력 구분 기호를 사용하여 레코드를 강제로 재평가하도록 필드를 재할당합니다.- 기록을 인쇄하세요(
1
사실이기 때문에)
시험
$ gawk -vRS='#EOM\n' '{gsub(/\n[[:xdigit:]-]+/,"");} {$1=$1} 1' file.txt
b929e3e1-29db this is a long message that is continued onto multiple lines
ff513a72-570d this is a short message
980d10aa-bbed another short message
1. 이해할 수 없는 이유로 교체 및 기타 다양한 조정 mawk
후에도 작동하지 않는 것 같습니다 )+
\{1,\}