파일에서 빈 줄을 모두 제거하고 싶습니다. 줄에 공백이나 탭이 포함되어 있어도 제거해야합니다.
답변
그냥 grep
비 공백에 대한 :
grep '[^[:blank:]]' < file.in > file.out
[:blank:]
문자 범위 ( [...]
) 내 에서 POSIX 문자 클래스라고합니다. 있는 것처럼 몇 가지 [:alpha:]
, [:digit:]
… [:blank:]
합니다 (POSIX 로케일에서, UTF8 로케일에서 유니 코드 수평 간격 문자를 공간과 탭,하지만 다른 로케일의 모든처럼 더있을 수 있습니다) 수평 공백과 일치하면서 [[:space:]]
경기 수평 및 수직 흰색 공백 문자 ( [:blank:]
세로 탭, 용지 공급 등과 같은 항목과 동일 )
grep '[:blank:]'
문자 중 하나를 포함하는 라인을 반환, :
, b
, l
, a
, n
또는 k
. 문자 클래스 내에서만 인식 [...]
하고, ^
내 [...]
세트 니 게이트. 따라서 [^[:blank:]]
공백이 아닌 문자를 의미합니다.
답변
awk
해결책 은 다음과 같습니다 .
$ awk NF file
로 awk
, NF
유일한 비 빈 줄에 설정합니다. 이 조건이 일치하면 awk
기본 조치가 print
전체 행을 인쇄합니다.
답변
어때요?
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 :: 및 기타 특수 문자에 대한 추가 정보
답변
sed
빈 줄을 제거하기 위해 명령을 사용할 수 있습니다 .
sed '/^$/d' in > out
이 명령은 “in”파일에서 빈 줄을 모두 삭제합니다.
답변
내가 그렇게 빠르지는 않지만 마지막에 재미있는 것을 찾은 것 같습니다.
| xargs -L1
답변
전직 시도 :
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
참조 :
- 공백 / 탭 줄을 포함하여 제거 : Unix의 파일에서 빈 줄을 제거하는 방법은 무엇입니까?
- With
sed
: sed를 사용하여 빈 줄 삭제 - With
awk
: awk를 사용하여 빈 줄 제거