在kornshell脚本中使用sed命令时保留空格

时间:2016-05-18 17:45:53

标签: bash shell sed spaces quote

我在使用sed命令时遇到了一些麻烦:

我想用一个字符串替换,单引号用两个单引号
这是我的字符串:

04CA07807800106109XE00187200000081960          NI         0780643442        178'0700

我使用此sed命令替换单引号:

line=`echo $line | sed "s/'/''/g"`

结果是

04CA07807800106109XE00187200000081960 NI 0780643442 178''0700

正如您所看到的,单引号被两个单引号正确替换 但是我丢失了字符串中每个字符之间的所有空格,我真的需要保留它们。

有没有办法用sed命令保留这些空格?
我尝试使用tr命令,我得到了相同的结果。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

问题不是sed命令,而是你的无引号变量。使用:

line=`echo "$line" | sed "s/'/''/g"`

不带引号的变量导致word splitting导致多个参数echo,导致单个间隔的单词。