所以我有两个文件:
/etc/some/file1.xml
/etc/some/file1.xml_bck
这些文件是包含一堆指令的配置文件(全部在一行中)。内容如下:
<SOMETHING>somehost.domain.com;192.123.123.124;SOMEHOST1.DOMAIN.UK</SOMETHING>
我的目标是用 /etc/some/file1.xml_bck 替换 /etc/some/file1.xml 之间的所有文本
我想sed
这可以起到作用,但是这有点超出我的能力范围。
答案1
考虑两个文件:
老的:
<SOMETHING>xxxxxxxxxx</SOMETHING>
新的:
<SOMETHING>yyyyyyyyyy</SOMETHING>
您可以运行:
$ subst=$(grep -o '<SOMETHING>.*</SOMETHING>' OLD)
$ sed -e "s~<SOMETHING>.*<\/SOMETHING>~${subst}~" NEW
<SOMETHING>xxxxxxxxxx</SOMETHING>
并且这是假设它~
不会出现在您要复制的文本块中。Sed 允许您使用几乎任何字符作为分隔符,因此根据文本的不同,分隔符可能是,
、?
等。