파일에서 빈 줄을 모두 제거하고 싶습니다. 줄에 공백이나 탭이 포함되어 있어도 제거해야합니다.
파일에서 빈 줄을 모두 제거하고 싶습니다. 줄에 공백이나 탭이 포함되어 있어도 제거해야합니다.
답변:
그냥 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를 사용하여 빈 줄 제거
$줄 끝이 있어야 합니까?