빈 줄이 많은 문서가 있습니다.
둘 이상이 함께 있을 때 어떻게 삭제합니까?
나는 sed "s/\n\n//"
성공하지 못한 채 파일을 시도했습니다. 오류가 없습니다.
답변1
sed '/^$/d'
sed
라인 지향적이므로 "2개 이상의 특정 바이트"를 고려할 수 있습니다.와는 별개로바이트가 개행 문자인 경우. 그런 다음 전체 라인에 걸쳐 작동하는 무언가를 생각해내야 합니다.
답변2
불필요한 sed
. grep
할 것입니다 :
grep .
(즉, grep
SPC, 점, 즉 최소한 하나의 문자를 포함하는 모든 줄과 일치합니다).
게다가:
tr -s '\n'
(개행 시퀀스를 하나로 압축합니다).
Chris가 지적했듯이 빈 줄을 제거하는 것은 (위의 첫 번째 솔루션과 여기에 초점을 맞춘 대부분의 다른 답변과 같이) 첫 번째 줄이 비어있는 경우 필요에 따라 개행 시퀀스를 압축하는 것과 동일하기 때문에 두 가지가 동일하지 않습니다. 단지 필요하다하나앞에 개행 문자가 있으면 첫 번째 줄이 비어 있습니다.
답변3
주어진 일련의 빈 줄에 대해 빈 줄을 예약하려면 다음을 수행할 수 있습니다.
sed -e '/./b' -e :n -e 'N;s/\n$//;tn'
답변4
대부분의 답변과 마찬가지로 후행 공백을 먼저 제거해야 합니다. 이중 개행을 제거하면 모든 빈 줄이 제거됩니다. (생각해보세요).
문자 그대로 해석하면 OP는 "중복된 빈 줄이 있는 경우 파일에서 모든 빈 줄을 제거"하려고 합니다.
일반적인 사용자는 "중복된 빈 줄만 제거"를 원합니다.
이렇게 하려면 먼저 후행 공백을 제거한 다음 cat -s를 통해 파이프하십시오.
sed s/[[:space:]]*$// | cat -s
그러나 이렇게 해도 과도한 선행 또는 후행 빈 줄은 제거되지 않습니다.