파일을 출력하고 파일의 암시적 개행($)을 리터럴(\n)로 변경하는 간단한 방법

파일을 출력하고 파일의 암시적 개행($)을 리터럴(\n)로 변경하는 간단한 방법

눈에 보이지 않는 개행 문자가 많은 파일이 있습니다. Vim에서는 $(를 사용하여 볼 수 있음 ) 으로 나타납니다 :set list. \ninvincible 대신 리터럴 문자열을 포함하는 문자열 줄로 표시되는 출력으로 변환하는 데 문제가 있습니다 $.

예:

# cat file.txt 
test
file
with
newlines

vim에서 줄바꿈을 보려면 :set list를 입력하세요.

이 명령을 사용하면 필요에 따라 출력 형식을 지정할 수 있습니다.

# awk '{printf "%s\\n", $0}' file.txt 
test\nfile\nwith\nnewlines\n

하지만 더 쉬운 방법이 있어야 한다고 생각합니다 sed.echoprintf

답변1

sed답변의 GNU 버전을 사용하십시오.

sed -z 's/\n/\\n/g' file.txt

파일 내용이 줄 바꿈으로 분할되는 것을 방지하려면 z이 옵션을 사용하십시오 .sed

다음을 사용하여 답변하십시오 echo.

xargs -I {} echo -n '{}\n' < file.txt

에 의해 xargs각 파일 라인에 대한 출력이 추가됩니다 echo.\n

답변2

어때요?

awk -v ORS='\\n' 1 infile

아니면 좀 더 컴팩트한 것:

awk 1 ORS='\\n' infile

답변3

사용 표준 sed:

H
1h
$ {
    g
    s/\n/\\n/g
    s/$/\\n/
}
$! d

즉, 현재 행을 다음에 추가합니다.예비 공간(첫 번째 행인 경우 예약된 공간을 덮어씁니다.) 마지막 줄에 있다면, use는 예약된 공백을 가져온 g다음 각 리터럴 개행 문자를 로 바꾸고 \n끝에 삽입한 다음 스크립트 끝에 도달하여 암묵적으로 버퍼를 인쇄합니다. \n마지막 줄에 있지 않으면 현재 버퍼를 암시적으로 인쇄하지 않고 다음 루프로 점프합니다.

명령줄에서:

sed -e H -e 1h -e '${ g; s/\n/\\n/g; s/$/\\n/; }' -e '$!d' file

그러면 입력의 모든 행이 \n구분 기호로 두 문자로 연결되어 출력됩니다. 출력 끝에 개행 문자가 있습니다.

답변4

perl:

perl -00pe 's/\n/\\n/g' file

LF최종 캐릭터를 시각적으로 보고 싶다면 .


\n그렇지 않고 콘솔에 표시되지 않고 출력(문자)을 잘라내려면 simple을 사용하세요 transliteration.

cat file | tr '\n' '\\'

관련 정보