sed는 '\\\'를 개행 문자로 바꿉니다. Linux

sed는 '\\\'를 개행 문자로 바꿉니다. Linux

다음 텍스트가 포함된 파일이 여러 개 있습니다.

20~02~19~05-01-52
2249\\\2249\\\2249\\\2249\\\2249\\\2249\\\2248\\\

줄 바꿈을 대체하기 위해 sed 또는 다른 Linux 명령을 사용하고 싶습니다 \\\.

답변1

sed 's|\\\\\\|\n|g' filenameGNU를 사용한다면 가능합니다 sed.

POSIX 를 원하면 sed다음과 같이 작동합니다(약간의 탈출이 필요합니다!).

sed 's|\\\\\\|\
|g' filename

답변2

여기서는 Perl을 사용하고 있는데 그 이유는 Perl이 더 발전된 정규식을 갖고 있고 쉽게 반복을 지원할 수 있기 때문입니다. 따라서 다음과 같습니다.

$ perl -pe 's/\\{3}/\n/g' file 
20~02~19~05-01-52
2249
2249
2249
2249
2249
2249
2248

-pe"-e로 지정된 스크립트를 적용한 후 각 입력 줄을 인쇄합니다"를 의미합니다 . 스크립트 자체는 단순히 \3의 모든 항목을 개행 문자로 대체합니다. 우리는 필요 때문에 피해야 하는 \\것이 아니라 피해야 합니다 .\\

이를 지원하는 경우 sed(GNU sed가 지원함) 동일한 접근 방식을 사용할 수 있습니다.

$ sed -E 's/\\{3}/\n/g' file 
20~02~19~05-01-52
2249
2249
2249
2249
2249
2249
2248

답변3

그리고 awk:

awk '{gsub(/\\{3}/, RS)}1' file

답변4

sed를 사용하세요: sed -n 's/\\\\\\/\n/g; p' filename.txt.

세미콜론 뒤에 "p"가 있는 것이 중요합니다. 그렇지 않으면 대체가 발생하지 않은 첫 번째 줄이 인쇄되지 않습니다. 백슬래시는 6개입니다. 왜냐하면 3개의 백슬래시는 가지고 있는 3개의 백슬래시에 대한 이스케이프 문자로 사용되기 때문입니다. "g"는 글로벌을 의미합니다. '-n'은 자동 인쇄를 방지합니다.

관련 정보