【发布时间】:2016-05-18 17:45:53
【问题描述】:
我在使用 sed 命令时遇到了一些问题:
我想用两个单引号替换一个字符串,一个单引号
这是我的字符串:
04CA07807800106109XE00187200000081960 NI 0780643442 178'0700
我用这个 sed 命令替换了单引号:
line=`echo $line | sed "s/'/''/g"`
结果是
04CA07807800106109XE00187200000081960 NI 0780643442 178''0700
如您所见,单引号已正确替换为两个单引号。
但是我丢失了字符串中每个字符之间的所有空格,我真的需要保留它们。
有没有办法用 sed 命令保留这些空格?
我尝试使用 tr 命令,得到了相同的结果。
感谢您的帮助。
【问题讨论】:
-
顺便说一句,
printf '%s\n' "$line"在处理任意输入时实际上比echo "$line"更正确(它本身比echo $line更正确)——参见@987654321 的应用程序部分@ -
...顺便说一句,shellcheck.net 会为您找到此错误,而无需人工参与。
-
我不知道这些东西。妥当注明。谢谢!
标签: bash shell sed spaces quote