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

3 perl awk solaris sed

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

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

        sed 's/^[ \t]*//;s/[ \t]*$//' orig_file > new_file
Run Code Online (Sandbox Code Playgroud)

但是我注意到sed还从每行的末尾删除了"t"字符.

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

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

1)

运行sed命令之前的原始行

   pack/configuration/param[14]/action:set_host
Run Code Online (Sandbox Code Playgroud)

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

   +/etc/cp/config/Network-Configuration/Network-Configuration.xml:/cp-pack/configuration/param[8]/action:set_host
Run Code Online (Sandbox Code Playgroud)

2)

运行sed命令后的行

   pack/configuration/param[14]/action:set_hos
Run Code Online (Sandbox Code Playgroud)

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

   +/etc/cp/config/Network-Configuration/Network-Configuration.xml:/cp-pack/configuration/param[8]/action:set_hos
Run Code Online (Sandbox Code Playgroud)

Kev*_*vin 5

刚发生在我身上你可以使用一个角色类:

sed 's/^[[:space:]]*//;s/[[:space:]]*$//'
Run Code Online (Sandbox Code Playgroud)

这种情况发生在您sed和gnu sed中的--posix选项,因为(显然)posix将其解释[ \t]为空格,a \或a t.您可以通过放置文字标签来解决此问题,而\t最简单的方法可能是Ctrl+ V Tab.如果这不起作用,请将模式放在一个文件中(使用文字标签)并使用sed -f patterns.sed oldfile > newfile.