perl之sed + 从 solaris 系统上的每一行中删除所有前导和尾随空格

davidwang456 阅读:47 2024-11-01 17:39:52 评论:0

我有一台 Solaris 机器 (SunOSsu1a 5.10 Generic_142900-15 sun 4vsparcSUNW,Netra-T2000)。

以下 sed 语法从每一行中删除所有前导和尾随空格(我需要删除空格,因为它会导致应用程序问题)。

        sed 's/^[ \t]*//;s/[ \t]*$//' orig_file > new_file 

但我注意到 sed 还删除了每行末尾的“t”字符。

请告知如何修复 sed 语法/命令以便仅从每行中删除前导和尾随空格(该解决方案也可以使用 Perl 或 AWK)。

示例(看看最后一个字符串 - set_host)

1)

运行sed命令之前的原始行

   pack/configuration/param[14]/action:set_host 

另一个例子(在我运行 sed 之前)

   +/etc/cp/config/Network-Configuration/Network-Configuration.xml:/cp-pack/configuration/param[8]/action:set_host 

2)

运行 sed 命令后的行

   pack/configuration/param[14]/action:set_hos 

另一个例子(在我运行 sed 之后)

   +/etc/cp/config/Network-Configuration/Network-Configuration.xml:/cp-pack/configuration/param[8]/action:set_hos 

请您参考如下方法:

我刚想到你可以使用字符类:

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

这发生在您的 sed 和带有 --posix 选项的 gnu sed 中,因为(显然)posix 将 [\t] 解释为空格、\t。您可以通过放置文字制表符而不是 \t 来解决此问题,最简单的方法可能是 Ctrl+V Tab .如果这不起作用,请将模式放入文件中(使用文字选项卡)并使用 sed -f patterns.sed oldfile > newfile


标签:程序员
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号