다음 텍스트가 포함된 파일이 여러 개 있습니다.
20~02~19~05-01-52
2249\\\2249\\\2249\\\2249\\\2249\\\2249\\\2248\\\
줄 바꿈을 대체하기 위해 sed 또는 다른 Linux 명령을 사용하고 싶습니다 \\\
.
답변1
sed 's|\\\\\\|\n|g' filename
GNU를 사용한다면 가능합니다 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'은 자동 인쇄를 방지합니다.