shell - 如何删除多个文件的尾随空格?

标签 shell find whitespace removing-whitespace in-place

是否有任何工具/UNIX 单行可以就地删除多个文件的尾随空格。

例如可以与find结合使用。

最佳答案

你想要

sed --in-place 's/[[:space:]]\+$//' file

这将删除所有 POSIX 标准定义的空白字符,包括垂直制表符和换页符。此外,它只会在尾随空格实际存在的情况下进行替换,这与使用零个或多个匹配器 (*) 的其他答案不同。

--in-place 只是 -i 的长形式。我更喜欢在脚本中使用长形式,因为它更能说明该标志的实际用途。

它可以轻松地与 find 集成,如下所示:

find . -type f -name '*.txt' -exec sed --in-place 's/[[:space:]]\+$//' {} \+

如果您使用的是 Mac

正如评论中所指出的,如果您没有安装 gnu 工具,上述内容将不起作用。如果是这种情况,您可以使用以下方法:

find . -iname '*.txt' -type f -exec sed -i '' 's/[[:space:]]\{1,\}$//' {} \+

关于shell - 如何删除多个文件的尾随空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10711051/

相关文章:

c++ - STL集查找性能

Excel VBA 查找和替换

rust - 使用 Pest.rs,如何在关键字后允许不重要的空格?

c++ - 不得删除 C++ 或 C 运算符之间的空格的示例

string - 如何在TCL中去除字符串中的空格?

bash 使用标准输入作为变量

c - 热设置 termcap 能力 'bw' 标志?

bash - bash 变量何时导出到子 shell 和/或可由脚本访问?

ruby-on-rails - rails 使用用户输入运行 shell 命令

linux - 在目录树中查找每个目录中的文件数