首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用sed删除尾随空格?

如何使用sed删除尾随空格?
EN

Stack Overflow用户
提问于 2010-12-14 18:44:21
回答 9查看 179K关注 0票数 125

我有一个简单的shell脚本,可以删除文件中的尾随空格。有没有办法使这个脚本更紧凑(不创建临时文件)?

代码语言:javascript
复制
sed 's/[ \t]*$//' $1 > $1__.tmp
cat $1__.tmp > $1
rm $1__.tmp
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-12-15 10:39:19

感谢codaddict提出了-i选项。

以下命令解决了Snow Leopard上的问题

代码语言:javascript
复制
sed -i '' -e's/[ \t]*$//' "$1"
票数 19
EN

Stack Overflow用户

发布于 2010-12-14 18:46:25

您可以在Linux和Unix上使用sed的就地选项-i

代码语言:javascript
复制
sed -i 's/[ \t]*$//' "$1"

请注意,表达式将在OSX上删除尾随的t(您可以使用gsed来避免此问题)。它也可能在BSD上删除它们。

如果您没有gsed,下面是OSX上正确的(但难以阅读的) sed语法:

代码语言:javascript
复制
sed -i '' -E 's/[ '$'\t'']+$//' "$1"

三个单引号的字符串最终连接成一个参数/表达式。bash中没有连接运算符,您只需将字符串一个接一个地放在一起,中间没有空格。

$'\t'在bash中解析为文字制表符字符(使用ANSI-C quoting),因此制表符被正确地连接到表达式中。

票数 181
EN

Stack Overflow用户

发布于 2013-03-15 02:01:56

至少在Mountain Lion上,Viktor的答案也会在行尾去掉字符't‘。以下是解决该问题的方法:

代码语言:javascript
复制
sed -i '' -e's/[[:space:]]*$//' "$1"
票数 63
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4438306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档