파일에서 빈 줄을 모두 제거하고 싶습니다. 줄에 공백이나 탭이 포함되어 있어도 제거해야합니다.
파일에서 빈 줄을 모두 제거하고 싶습니다. 줄에 공백이나 탭이 포함되어 있어도 제거해야합니다.
답변:
그냥 grep
비 공백에 대한 :
grep '[^[:blank:]]' < file.in > file.out
[:blank:]
문자 범위 ( [...]
) 내 에서 POSIX 문자 클래스라고합니다. 있는 것처럼 몇 가지 [:alpha:]
, [:digit:]
... [:blank:]
합니다 (POSIX 로케일에서, UTF8 로케일에서 유니 코드 수평 간격 문자를 공간과 탭,하지만 다른 로케일의 모든처럼 더있을 수 있습니다) 수평 공백과 일치하면서 [[:space:]]
경기 수평 및 수직 흰색 공백 문자 ( [:blank:]
세로 탭, 용지 공급 등과 같은 항목과 동일 )
grep '[:blank:]'
문자 중 하나를 포함하는 라인을 반환, :
, b
, l
, a
, n
또는 k
. 문자 클래스 내에서만 인식 [...]
하고, ^
내 [...]
세트 니 게이트. 따라서 [^[:blank:]]
공백이 아닌 문자를 의미합니다.
[^[:blank:]]$
공백이 아닌 행으로 만 일치합니다. 우리는 어디서나
grep -E '\S'
작동하지 않는 경우가 있습니까?
어때요?
sed -e 's/^[[:blank:]]*$//' source_file > newfile
또는
sed -e '/^[[:blank:]]*$/d' source_file > newfile
즉
각 줄에 대해 다음을 대체하십시오.
^
")[[:blank:]]
")이 0 번 이상있는 경우 ( " *
")$
").http://www.zytrax.com/tech/web/regex.htm#special의 :: blank :: 및 기타 특수 문자에 대한 추가 정보
[[:space:]]
탭을 포함합니다. 공백이 없으면 탭 뒤에 공백이 있으면 정규식이 실패합니다.
wctype(3)
와 isalpha(3)
맨은 문자 클래스가 일치 무엇인지에 대해 설명합니다.
sed
빈 줄을 제거하기 위해 명령을 사용할 수 있습니다 .
sed '/^$/d' in > out
이 명령은 "in"파일에서 빈 줄을 모두 삭제합니다.
전직 시도 :
ex -s +'v/\S/d' -cwq test.txt
여러 파일의 경우 (제자리에서 편집) :
ex -s +'bufdo!v/\S/d' -cxa *.txt
참고 : :bufdo
명령은 POSIX 가 아닙니다 .
파일을 수정하지 않고 (표준 출력으로 인쇄) :
cat test.txt | ex -s +'v/\S/d' +%p +q! /dev/stdin
다음 명령을 사용하십시오.
grep '\S' FILE
공백이나 탭을 포함한 모든 줄을 제거합니다.
그렇지 않으면 공백 / 탭이있는 행을 포함하지 않는 제거는 다음을 사용하십시오.
grep . FILE
예를 들면 다음과 같습니다.
$ printf "line1\n\nline2\n \nline3\n" > FILE
$ cat -v FILE
line1
line2
line3
$ grep '\S' FILE
line1
line2
line3
$ grep . FILE
line1
line2
line3
참조 :
sed
: sed를 사용하여 빈 줄 삭제awk
: awk를 사용하여 빈 줄 제거
$
줄 끝이 있어야 합니까?