Nested sed (sed in sed)



我想提取主机名的数量(如Server01=>01(,并将其作为字符串的一部分存储到文件中。

不幸的是,它仍然不起作用。最后一次尝试如下所示:

sed s/TRUNKNUMBER/0812345`hostname | sed -e 's/[^0-9]//g'`/ -i sipgate.xml

但结果是,TRUNKNUMBER被删除,取而代之的是像"081234501"这样的数字。

我做错了什么?我还想知道如果给出 sed 错误,如何计算字符

sed: -e expression #1, char 13: unknown option to `s'

UPDATE1: 当然,我可以提供更多信息。我以为很清楚,但对不起。

floh@Host01:~$ hostname
Host01
floh@Host01:~$ cat sipgate.xml
<extension name="sipgate">
<condition field="destination_number" expression="^TRUNKNUMBER">
...
</condition>
</extension>
</extension>

正如我所写的,我想将 sipgate 中的"TRUNKNUMBER"替换为由"0812345"+ 主机名数组成的字符串.xml。

使用一个 sed 命令,我可以提取主机名的数量:

floh@Host01:~$ hostname | sed -e 's/[^0-9]//g'
01

这很好,现在我尝试了:

sed s/TRUNKNUMBER/0812345`hostname | sed -e 's/[^0-9]//g'`/ -i sipgate.xml

然后我得到了:

floh@Host01:~$ cat sipgate.xml
<extension name="sipgate">
<condition field="destination_number" expression="^">
...
</condition>
</extension>
</extension>

这不好,因为我期望"...表达式="^081234501">' 在第二行。

抱歉,我发现该命令已经正常:

sed s/TRUNKNUMBER/0812345`hostname | sed -e 's/[^0-9]//g'`/ -i sipgate.xml

结果是"错误的",因为我酸性地重用了没有字符串TRUNKNUMBER的源文件。(显然我忘记恢复源文件以进行该尝试(

现在我了解到下次我应该删除 -i 以测试输出,而不是尝试修改文件。

再次对不起! 弗洛

最新更新