developer tip

grep을 통해 텍스트 파일에서 빈 줄 제거

optionbox 2020. 10. 26. 07:56
반응형

grep을 통해 텍스트 파일에서 빈 줄 제거


FILE:

hello

world

foo

bar

이 모든 빈 새 줄을 제거 할 때 어떻게 할 수 FILE있습니까?

명령 출력 :

FILE:

hello
world
foo
bar

grep . FILE


(그리고 당신이 정말로에서 다음, sed를 수행하려는 경우 : sed -e /^$/d FILE)

(그리고 당신이 정말로 다음, AWK에서 작업을 수행하려는 경우 : awk /./ FILE)


다음을 시도하십시오.

grep -v -e '^$'

with awk, just check for number of fields. no need regex

$ more file
hello

world

foo

bar

$ awk 'NF' file
hello
world
foo
bar

다음은 공백이거나 공백 문자 만 포함 된 모든 행을 제거하는 솔루션입니다.

grep -v '^[[:space:]]*$' foo.txt

이 시도: sed -i '/^[ \t]*$/d' file-name

아니오가있는 모든 빈 줄을 삭제합니다. 공백 (공백 또는 탭), 즉 파일의 (0 개 이상).

참고 : 대괄호 안에는 '공백'과 '\ t'가 있습니다.

수정자는 -i업데이트 된 내용을 파일에 다시 씁니다. 이 플래그가 없으면 화면에서 빈 줄이 삭제 된 것을 볼 수 있지만 실제 파일에는 영향을주지 않습니다.


grep '^..' my_file

THIS

IS

THE

FILE

EOF_MYFILE

최소 2 자 이상의 행만 출력으로 제공합니다.

THIS
IS
THE
FILE
EOF_MYFILE

grep '^' my_file출력 결과를 참조하십시오.

THIS

IS

THE

FILE

EOF_MYFILE

또한 grep '^.' my_file출력

THIS
IS
THE
FILE
EOF_MYFILE

전 방법 시도 :

ex -s +'v/\S/d' -cwq test.txt

여러 파일의 경우 (내부 편집) :

ex -s +'bufdo!v/\S/d' -cxa *.txt

파일을 수정하지 않고 (표준 출력에 인쇄) :

cat test.txt | ex -s +'v/\S/d' +%p +q! /dev/stdin

Perl은 과잉 일 수 있지만 잘 작동합니다.

완전히 비어있는 모든 줄을 제거합니다.

perl -ne 'print if /./' file

완전히 비어 있거나 공백 만 포함하는 모든 줄을 제거합니다.

perl -ne 'print if ! /^\s*$/' file

원본을 편집하고 .bak 파일을 만드는 변형 :

perl -i.bak -ne 'print if ! /^\s*$/' file

빈 줄을 제거하는 것이 공백을 포함하는 줄을 의미하는 경우 다음을 사용하십시오.

grep '\S' FILE

예를 들면 :

$  printf "line1\n\nline2\n \nline3\n\t\nline4\n" > FILE
$  cat -v FILE
line1

line2

line3

line4
$  grep '\S' FILE
line1
line2
line3
line4
$  grep . FILE
line1
line2

line3

line4

또한보십시오:

참고URL : https://stackoverflow.com/questions/1611809/remove-empty-lines-in-a-text-file-via-grep

반응형