파일에서 빈 줄을 모두 제거하고 싶습니다. 줄에 공백이나 탭이 포함되어 있어도 제거해야 합니다.
답변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" 파일의 모든 빈 줄을 제거합니다.