从文件中去除尾随空格

从文件中去除尾随空格

答案是使用 sed 删除尾随空格已经有大部分答案了,但我想要

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

能够在命令行上将任意数量的文件参数作为 shell 脚本,包括 glob 参数。即假设该脚本名为strip_trailing_whitespace.那么我希望能够同时做到这两点

strip_trailing_whitespace foo.cc bar.cc

strip_trailing_whitespace *.cc *.hh

*.cc从所有格式为和的文件中去除尾随空格*.hh。不基于上面引用的答案的论点也可以。

答案1

$1是一个位置参数;它将扩展到传递给脚本的第一个参数。类似的还有$2$3…… $9,,,${10}……${11}

特殊参数 "$@"将扩展到一个列表全部位置参数。

所以你可以执行以下操作:

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

如果您想将 glob/pattern 传递给此脚本(或任何程序),则在调用脚本时必须对其进行转义或引用 - 这是 shell 的一个函数;它会在您的脚本看到任何模式之前扩展它。这种情况不需要 - shell 可以扩展模式,并且扩展的结果全部传递给sed.

答案2

我发现将 sed 与 xargs 一起使用很容易,如下所示:

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

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

相关内容