빈 줄이 많은 문서가 있습니다.
둘 이상이있을 때 어떻게 제거 할 수 있습니까?
sed "s/\n\n//"
파일을 시도 했지만 작동하지 않았습니다. 오류가 없습니다.
빈 줄이 많은 문서가 있습니다.
둘 이상이있을 때 어떻게 제거 할 수 있습니까?
sed "s/\n\n//"
파일을 시도 했지만 작동하지 않았습니다. 오류가 없습니다.
답변:
빈 줄을 제거하려면 :
sed '/^$/d'
sed
행 지향적이므로 "2 바이트 이상 특정 바이트"의 관점에서 생각 하면 해당 바이트가 줄 바꿈 일 때를 제외하고 작동합니다 . 그런 다음 전체 라인에 적합한 것을 생각해야합니다.
sed
"패턴 공간"/ "홀드 공간"기능을 통해 여러 줄을 처리 할 수 있습니다. 그러나 나는 그것이 너무 복잡하다고 생각합니다. ;-)
1!
(1 행을 제외한 모든 문자와 일치)로 묶을 수 있습니다 sed '1!{/^$/d'}
.
sed
합니다. 파일을 만들면 이름이 같은 기존 파일이 모두 삭제됩니다. sed '/^&/d' file.txt > otherfile.txt
작동합니다.
필요 없습니다 sed
. grep
할 것이다 :
grep .
(즉 grep
, 하나 이상의 문자를 포함하는 모든 행과 일치하는 SPC, dot)입니다.
또한있다 :
tr -s '\n'
(개행 문자 시퀀스를 하나로 압축하십시오).
Chris가 언급했듯이 빈 줄을 제거하는 것 (위의 첫 번째 솔루션과 여기에 초점을 둔 대부분의 다른 답변과 같은)은 첫 줄이 비어있는 경우 요청 된 줄 바꿈 문자 시퀀스를 짜는 것과 같지 않기 때문에 둘 다 동일하지 않습니다. 첫 줄을 비우기 위해 하나의 선행 줄 바꿈 문자 만 사용합니다.
@Bruce Ediger의 답변 sed
행 기반 \n
문자이며 행 끝 문자로 취급 하기 때문에이 도구가 가장 적합한 도구는 아닙니다 .sed
이 작업에 완벽한 도구 일 수도 있지만 여전히 다른 옵션이 있습니다.
펄
perl -ne 'print if /./' file.txt
또는
perl -pe '$/=""; s/\n+/\n/;' file.txt
$ /
입력 레코드 구분 기호 (기본적으로 줄 바꾸기). 이것은 "선"이 무엇인지에 대한 Perl의 아이디어에 영향을 미칩니다. null 문자열로 설정된 경우 빈 줄을 종결 자로 처리하는 것을 포함하여 awk의 RS 변수처럼 작동합니다 (빈 줄은 공백이나 탭을 포함 할 수 없음). 다중 문자 터미네이터와 일치 시키거나 파일 끝을 읽도록 undef하도록 다중 문자 문자열로 설정할 수 있습니다. 파일에 연속 된 빈 줄이 있으면 "\ n \ n"으로 설정하면 ""으로 설정하는 것과 약간 다른 의미입니다. ""로 설정하면 연속 된 두 개 이상의 빈 줄이 하나의 빈 줄로 취급됩니다. "\ n \ n"으로 설정하면 다음 입력 문자가 줄 바꾸기 인 경우에도 다음 단락에 속한다고 가정합니다.
gawk / awk
awk '$1' file.txt
그것은 게시 된 예제에서 작동하지만 @Stephane Chazelas가 지적했듯이 첫 번째 필드가 "like like"인 행도 삭제합니다 0
. 이것은 더 강력합니다.
awk NF file.txt
perl -pe 's/\n+/\n/ file.txt
입력 레코드 구분 기호는이 용도와 관련이 없습니다.
perl -pe
또는 perl -ne
한 줄씩 작업하십시오. \n+
한 줄에만 적용되므로 일치하지 않습니다. 그렇기 때문에 파일 전체를 설정 $/
하거나 사용해야 -0
합니다 perl -0pe 's/\n+/\n/' file
.
이러한 답변의 대부분에 대해서는 후행 공백을 먼저 제거해야합니다. 줄 바꿈 두 개를 제거하면 모든 빈 줄이 제거됩니다. (이것에 대해 생각하다).
문자 그대로 OP는 "반복 된 빈 줄이 있으면 파일에서 모든 빈 줄을 제거합니다"를 원합니다.
일반 사용자는 "중복 된 빈 줄만 제거"를 원합니다.
이렇게하려면 후행 whitepace를 먼저 제거하고 cat -s를 통해 파이프하십시오.
sed s/[[:space:]]*$// | cat -s
그럼에도 불구하고 이것은 수퍼 플로어 스 선행 또는 후행 빈 줄을 제거하지 않습니다.
시도 sed -e 's#\\n\\n#\\n#g' input.file > output.file
하여 /
문제가 될 수 귀하의 필드 분리하고 정규 표현식의 한 부분으로 둘 다.