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