파일의 여러 줄을 한 줄로 변환하면 큰따옴표가 손실됩니다.

파일의 여러 줄을 한 줄로 변환하면 큰따옴표가 손실됩니다.

이것은 내 샘플 파일입니다.

cat test.txt
"IND WEB",
"Speed Web (Internal webserver)",
"Web Bill",

여러 줄을 한 줄로 변환하기 위해 다음 두 가지 솔루션을 시도했지만 큰따옴표 "가 없습니다!

cat listofapps.txt | xargs -s 8192
IND WEB, Speed Web (Internal webserver), Web Bill,

tr '\n' < listofapps.txt
IND WEB, Speed Web (Internal webserver), Web Bill,

큰따옴표를 유지하라고 제안할 수 있나요?

답변1

xargs큰따옴표는 xargs유틸리티에 의해 해석 되므로 사용할 때 손실됩니다(참조:xargs가 입력에서 따옴표를 제거하는 이유는 무엇입니까?).

명령 tr이 손상되어 오류 메시지가 표시됩니다.

tr다음을 사용하여 개행 문자를 제거하려면

tr -d '\n' <file

줄 바꿈을 공백으로 바꾸려면 다음을 사용하십시오.

tr '\n' ' ' <file

공백으로 줄을 연결하려면:

paste -sd ' ' file

(위와 동일합니다. 단, 끝에 개행 문자를 추가하여 유효한 텍스트 줄로 만듭니다.)

답변2

sed방법:

sed '${G;s/\n//g;p;};H;d' sample.txt

동일하지만 댓글에 설명되어 있습니다.

sed '
    ${
        # If we are in the last line

        G; # Get anything stored in the hold space

        s/\n//g; # Replace any occurrence of space with nothing

        p; # Print 
    }
   
    # We are not in the last line so 
    H; # save the current line
    d; # and start the next cycle without print
' sample.txt

관련 정보