주어진 파일에서 줄 끝에서 후행 공백을 제거하는 방법 (둘 이상)?


9

소스 파일에 쓸모없는 공간이 생겨서 vim이 보이도록 구성했습니다.

문제는 내가 (항상 그런 것은 아니지만) 동료 개발자와 쓸모없는 공간을 다루어야한다는 것입니다.

소스 파일을 스캔하고 (정규 표현식으로 제공) 모든 주어진 파일에서 공백을 제거하고 싶습니다.

웹을 검색했지만 ( "bash remove whitespace"등) 유용한 정보를 찾지 못했습니다.


2
어떤 공백을 제거 하시겠습니까? 당신이 제거하고 싶은 것에 대한 예가 없다면, 아무도 당신을 도울 수있는 방법을 보지 못합니다. (나는 tr -d ' ' < file.foo당신이 찾고있는 것이 아니라고 추측 합니다.)
Mat

쓸모없는 공백과 유용한 공백의 차이점을 프로그래밍 방식으로 어떻게 알 수 있습니까? BTW : for 루프와 mv 및 sed를 사용하고 공백을 축소 할 수 있습니다.
bsd

vim에 파일을 저장할 때 후행 공백을 제거 할 수도 있습니다 (무언가를 편집 한 후이
Lucas

답변:


8

쓸모없는 공백이 줄의 끝에 공백을 의미하는 경우 GNU 시스템에서 작동합니다.

find -name '*.c' -print0 | xargs -r0 sed -e 's/[[:blank:]]\+$//' -i

( *.c소스 파일과 일치하는 것으로 교체 하십시오)


제목을 변경했습니다. 답변 해 주셔서 감사합니다. 누군가가 그렇게 간단하다고 생각해서 아무도 그런 질문을하지 않아야했기 때문에 누군가 투표를하지 않았습니다 ;^). 다시 감사합니다.
Olivier Pons

1

이것은 반복되는 문제입니다!

perl -i -pe 's/\s+\n/\n/'  ./*.c

( ' \r\n' 도 제거합니다. )

일반적으로 약간 더 복잡한 버전 "nrs"(중복 공간 없음)를 사용합니다.

#!/usr/bin/perl -pi
s/\h*(\r\n|\n|\r)/\n/g;                 ## normalize \n (DOS, MAC)
s/^(\xFF\xFE|\xFE\xFF|\xEF\xBB\xBF)//;  ## remove BOM !

그것을 설치하십시오 : chmod 755 nrs; cp nrs ~/bin; (또는 비슷한)

그리고 사용 : nrs ./*.c

이진 파일에서 사용하지 마십시오!



0

GNU 도구를 사용하여 이미 정상인 파일을 건드리지 않으려면 :

grep -rlZ --binary-files=without-match --include='*.c' '\s$' . |
  xargs -r0 sed -i 's/\s+$//'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.