파일에서 빈 줄을 제거하는 방법 (탭과 공백 포함)? 제거하고 싶습니다. 줄에 공백이나 탭이

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



답변

그냥 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

참조 :