perl之sed + 从 solaris 系统上的每一行中删除所有前导和尾随空格
我有一台 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.作者投稿可能会经我们编辑修改或补充。