명령 행을 사용하여 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
명령 행을 사용하여 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
이 현재 위치에서 파일을 편집 것을 의미합니다.
bad flag in substitute command: 'e'
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
: sed를 사용하여 빈 줄 삭제awk
: awk를 사용하여 빈 줄 제거grep .
가장 간단한 해결책 인 것 같습니다.
grep .
다른 솔루션과 비교할 때 단점은 모든 텍스트를 빨간색으로 강조 표시한다는 것입니다. 다른 솔루션은 원래 색상을 유지할 수 있습니다. 비교 unbuffer apt search foo | grep .
에unbuffer apt search foo | grep -v ^$
grep
별칭이 지정되어 있기 때문에 색상 이 grep --color=auto
표시됩니다 (다음으로 확인 type grep
). 이를 실행 \grep
하거나 --color=none
매개 변수를 사용할 수 있습니다 .
grep --color=none .
: (예를 들어, 원래 명령의 색 서식을 무시 모두 흰색 텍스트를 얻을 것이다 apt search foo
)
grep .
OP는 바람직하지 않은 공백 만 포함하는 행과 일치합니다.
sed '/^$/d' file.txt
d는 행을 삭제하는 sed 명령입니다. ^$
빈 줄, 줄 시작 및 줄 끝만 일치하는 정규식입니다.
grep과 함께 -v 옵션을 사용하여 일치하는 빈 줄을 제거 할 수 있습니다.
이렇게
grep -Ev "^$" file.txt
-E
적어도 GNU grep 이 아니라는 것이 필요하다고 생각하지는 않지만 grep 로이 작업을 수행하게되어 매우 기쁩니다! 매번 sed보다 선호하는 것입니다. 인라인 필터는 인라인 편집기보다 나을 것 같습니다.
grep -Ev '^#|^$' file.txt
저에게 @ martigin-heemels 명령은 오류를 던졌습니다 (예 : 더미 매개 변수 i).
sed -i '' '/^$/d' file.txt
공백없이 빈 줄을 제거하는 가장 쉬운 방법은 다음을 사용하는 것입니다 cat -s
.
$ cat -s file
$ some-command | cat -s
적어도 파일을 편집하지 않고 대신 터미널에 쓰는 경우. 또한 재미있는 정규식 사업이 포함되어 있지 않기 때문에 비 친숙한 사람들조차도 쉽게 기억할 수 있습니다.
보낸 사람 man cat
:
-s, --squeeze-blank never more than one single blank line
다른 OS에서는 다를 수 있지만 지난번에 확인했을 때 몇몇 Linux 및 OpenBSD에는있었습니다.