명령 행을 사용하여 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
또한보십시오:
- 파일에서 빈 줄을 제거하는 방법 (탭과 공백 포함)?
- With
sed
: sed를 사용하여 빈 줄 삭제 - With
awk
: awk를 사용하여 빈 줄 제거
답변
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