유닉스 파일에서 공백 / 빈 줄을 제거하는 방법 (공백 포함)? 사용하여 Unix

명령 행을 사용하여 Unix / Linux의 파일에서 빈 / 공백 (공백 만 포함) 행을 제거하려면 어떻게해야합니까?

file.txt의 내용

Line:Text
1:<blank>
2:AAA
3:<blank>
4:BBB
5:<blank>
6:<space><space><space>CCC
7:<space><space>
8:DDD

원하는 출력

1:AAA
2:BBB
3:<space><space><space>CCC
4:DDD


답변

이 sed 라인은 트릭을 수행해야합니다.

sed -i '/^$/d' file.txt

-i이 현재 위치에서 파일을 편집 것을 의미합니다.


답변

grep

간단한 해결책은 아래와 같이 grep( GNU 또는 BSD ) 명령을 사용하는 것입니다.

  • 빈 줄을 제거하십시오 (공백이있는 줄은 제외).

    grep . file.txt
    
  • 공백이있는 줄을 포함하여 완전히 빈 줄을 제거하십시오.

    grep "\S" file.txt
    

참고 : 원치 않는 색상이 표시되면 grep별명입니다 grep --color=auto(에 의해 확인 됨 type grep). 이 경우 --color=none매개 변수 를 추가 하거나 명령을 \grep(별칭 무시) 로 실행하면됩니다 .


ripgrep

와 비슷합니다 ripgrep(더 큰 파일에 적합).

공백이있는 줄을 포함하지 않는 빈 줄을 제거하십시오.

rg -N . file.txt

또는 공백이있는 줄 포함 :

rg -N "\S" file.txt

또한보십시오:


답변

sed '/^$/d' file.txt

d는 행을 삭제하는 sed 명령입니다. ^$빈 줄, 줄 시작 및 줄 끝만 일치하는 정규식입니다.


답변

grep과 함께 -v 옵션을 사용하여 일치하는 빈 줄을 제거 할 수 있습니다.

이렇게

grep -Ev "^$" file.txt

답변

awk해결책 은 다음과 같습니다 .

awk NF file.txt

Awk를 사용하면 NF공백이 아닌 줄에만 설정하십시오. 이 조건이 일치하면 Awk 기본 조치는 전체 행을 인쇄하는 것입니다.


답변

빈 줄을 제거하려면 다음을 사용하여 새 줄 반복을 꽉 쥐십시오 tr.

cat file.txt | tr -s '\n' '\n'

답변

공백을 제거하는 것이 마음에 들지 않으면 xargs

$ docker run -it --rm alpine sh
/ # cat <<eof > /tmp/file
> one
>
>   two
> three
>
>
>   four
> eof
/ # cat /tmp/file
one

  two
three


  four
/ # cat /tmp/file | xargs -n1
one
two
three
four