파일에서 빈 줄(탭 및 공백 포함)을 제거하는 방법은 무엇입니까?

파일에서 빈 줄(탭 및 공백 포함)을 제거하는 방법은 무엇입니까?

파일에서 빈 줄을 모두 제거하고 싶습니다. 줄에 공백이나 탭이 포함되어 있어도 제거해야 합니다.

답변1

해결책 은 다음과 같습니다 awk.

$ awk NF file

의 경우 awk비어 NF있지 않은 줄에만 설정하세요. 이 조건이 일치하면 awk기본 작업은 print전체 줄을 인쇄하는 것입니다.

답변2

공백이 아닌 경우 에만 grep작동합니다.

grep '[^[:blank:]]' < file.in > file.out

[:blank:], 문자 범위( [...])에서 POSIX 문자 클래스라고 합니다. [:alpha:], [:digit:]... [:blank:]가로 공백 문자 일치(POSIX 로케일에서는 공백과 탭이지만 다른 로케일에는 UTF8 로케일의 모든 유니코드 가로 공백 문자와 같이 더 많을 수 있음)가 있으며 가로 [[:space:]]및 세로 공백 문자와 일치합니다. ( [:blank:]세로 탭, 용지 공급 등과 동일)

grep '[:blank:]'

:b, , l, a또는 문자가 포함된 n행이 반환됩니다 k. 문자 클래스는 내에서만 인식되며 [...]컬렉션 은 ^내에서 무효화됩니다. [...]따라서 [^[:blank:]]공백 문자를 제외한 모든 문자를 의미합니다.

답변3

어때요?

sed -e 's/^[[:blank:]]*$//' source_file > newfile

또는

sed -e '/^[[:blank:]]*$/d' source_file > newfile

각 줄에 대해 다음을 바꿉니다.

  • 시작되면(" ^")
  • 공백이나 탭(" [[:blank:]]")을 0번 이상 사용(" *")
  • 그런 다음 줄 끝(" $")

::blank:: 및 기타 특수 문자에 대한 자세한 내용을 보려면 다음 사이트를 방문하세요.http://www.zytrax.com/tech/web/regex.htm#special

답변4

sed다음 명령을 사용하여 빈 줄을 제거 할 수 있습니다 .

sed '/^$/d' in > out

이 명령은 "in" 파일의 모든 빈 줄을 제거합니다.

관련 정보