백슬래시+개행 시퀀스 제거

백슬래시+개행 시퀀스 제거

Linux에는 각 레코드에 한 줄이 포함된 파일이 있지만 줄에 줄 바꿈이 포함되어 있으면 문제가 발생합니다. 이 경우 백슬래시가 줄 끝에 추가되고 레코드가 여러 줄로 분할됩니다. 내 질문은 다음과 같습니다.

"abc def \
xyz pqr"

해야 한다:

"abc def xyz pqr"

나는 sed -I 's/\\\n/ /g' <file_name>어떤 것이 작동하지 않는지 시도했습니다. 해당 명령도 시도했지만 tr문자열이 아닌 문자만 대체했습니다. 이 문제를 처리하기 위한 명령을 제안해 주실 수 있나요?

답변1

당신은 사용할 수 있어야합니다

sed -e :a -e '/\\$/N; s/\\\n//; ta'

피터 크러밍스 보기유명한 Sed Quips 설명, 1부,39. 줄이 백슬래시 "\"로 끝나면 다음 줄에 추가합니다..

답변2

당신은 그것을 사용할 수 있습니다 awk:

$ awk 'sub(/\\$/,""){printf("%s", $0);next};1' file
"abc def xyz pqr"

답변3

가장 짧은 해결책은 Perl을 사용하는 것 같습니다.

perl -pe 's/\\\n//'

답변4

또 다른 awk변화

awk '{ORS = /\\/? "": RS; sub(/\\$/, ""); print}' file

관련 정보