微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Sed去除前导和尾随空格的问题

我正在使用下面的代码文件A.txt的所有行中删除前导和尾随空格

sed 's/^[ t]*//;s/[ t]*$//' ./A.txt > ./B.txt

问题出现在开始或结束的行上。 所以说例如,以string“timezone”开头的原始行变成“imezone”

你能告诉我这里发生了什么吗? 并且如果存在已知的问题解决scheme。

提前致谢。

使用模式匹配删除Windows文件

find零的Opengl 3.2像素格式匹配?

Java线程和本地Linux线程之间的匹配

如何匹配Nginx中扩展less的文件的位置?

用grep命令匹配特定的列

Sed在日志文件中使用

用驱动程序注册(/绑定/匹配)设备

一些老版本的sed不理解C风格的转义字符,比如 t,并把它当作两个字符''和't'。 您可以通过使用文本制表符来避免这个问题 – 如果您直接在shell中输入,请键入Ctrl+V Tab 。

另一种选择,使用空格字符类,如果您的各种sed不支持s :

sed 's/^[[:space:]]*//;s/[[:space:]]*$//'

如果你只使用空白字符类,你可能会有更好的运气:

sed -e 's/^s*//' -e 's/s*$//' A.txt > B.txt

新版本的sed理解 t但旧版本可能没有。 用字面标签替换 t可能会更好(CTRL-V会给你的)

你在什么系统上使用什么版本的sed? (sed – 版本为GNU sed)

呆子

awk '{gsub(/^[[:space:]]+|[[:space:]]+$/,"")}1' file

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐