파일에서 후행 공백 제거

파일에서 후행 공백 제거

정답은sed를 사용하여 후행 공백 제거이미 대부분의 답변이 있지만 저는

sed -i 's/[ \t]*$//' $1

glob 인수를 포함하여 명령줄에서 쉘 스크립트로 원하는 수의 파일 인수를 전달하는 기능. 즉, 스크립트가 이라고 가정해 보겠습니다 strip_trailing_whitespace. 그런 다음 이 두 가지 작업을 모두 수행할 수 있기를 원합니다.

strip_trailing_whitespace foo.cc bar.cc

그리고

strip_trailing_whitespace *.cc *.hh

*.ccsum 형식의 모든 파일에서 후행 공백을 제거합니다 *.hh. 위에 인용된 답변을 기반으로 하지 않은 주장도 괜찮습니다.

답변1

$1위치 매개변수;스크립트에 전달된 첫 번째 인수로 확장됩니다. 유사한 것에는 $2, $3... $9,,,, ${10}... 이 포함됩니다.${11}

이것특수 매개변수 "$@"목록으로 확장됩니다모두위치 매개변수.

따라서 다음을 수행할 수 있습니다.

sed -i 's/[ \t]*$//' "$@"

이 스크립트(또는 모든 프로그램)에 glob/패턴을 전달하려면 스크립트를 호출할 때 이스케이프하거나 인용해야 합니다. 이는 스크립트가 패턴을 보기 전에 확장되는 쉘의 기능입니다. 이 경우에는 이것이 필요하지 않습니다. 쉘은 패턴을 확장할 수 있으며 확장 결과는 모두 에 전달됩니다 sed.

답변2

다음과 같이 xargs와 함께 sed를 사용하는 것이 쉽다는 것을 알았습니다.

find . -name "*.xml" | xargs sed -i 's/[ \t]*$//'

find . -type f | grep cc | xargs sed -i 's/[ \t]*$//'

관련 정보