Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 在UNIX中使用SED命令替换整个字符串_Regex_Bash_Shell_Unix_Sed - Fatal编程技术网

Regex 在UNIX中使用SED命令替换整个字符串

Regex 在UNIX中使用SED命令替换整个字符串,regex,bash,shell,unix,sed,Regex,Bash,Shell,Unix,Sed,我有下面的XML <?xml version='1.0' encoding='UTF-8'?> <refdataContent xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.orbitz.com/refdataContent file:///opt/orbitz/schemas/content/refdataContent/1/0/refdataConte

我有下面的XML

<?xml version='1.0' encoding='UTF-8'?>
<refdataContent xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.orbitz.com/refdataContent file:///opt/orbitz/schemas/content/refdataContent/1/0/refdataContent.xsd' xmlns='http://www.orbitz.com/refdataContent'>

  <entry key='com.orbitz.reference.api.hotel.HotelPlacementMetagyType.PREMIUMPLACEMENT'><![CDATA[Premium Placement]]></entry>
  <entry key='com.orbitz.reference.api.hotel.HotelAvailability.AVAILABLE'><![CDATA[Available]]></entry>
</refdataContent>
需要替换XML头吗

<refdataContent xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'xsi:schemaLocation='http://www.orbitz.com/refdataContent file:///opt/orbitz/schemas/content/refdataContent/1/0/refdataContent.xsd'xmlns='http://www.orbitz.com/refdataContent'> </refdataContent>
作为 使用SED命令


帮助?

关于sed-i的/refdataContent/properties/g'yourfile.xml呢?

很难准确理解您想要做什么,我将尝试几个选项

鉴于以下情况:

$ cat blah.xml
<?xml version='1.0' encoding='UTF-8'?>
<refdataContent xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.orbitz.com/refdataContent file:///opt/orbitz/schemas/content/refdataContent/1/0/refdataContent.xsd' xmlns='http://www.orbitz.com/refdataContent'>

  <entry key='com.orbitz.reference.api.hotel.HotelPlacementMetagyType.PREMIUMPLACEMENT'><![CDATA[Premium Placement]]></entry>
  <entry key='com.orbitz.reference.api.hotel.HotelAvailability.AVAILABLE'><![CDATA[Available]]></entry>
</refdataContent>
将该行替换为:

要将行换行,请执行以下操作:

你是说改变

<refdataContent xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'xsi:schemaLocation='http://www.orbitz.com/refdataContent file:///opt/orbitz/schemas/content/refdataContent/1/0/refdataContent.xsd'xmlns='http://www.orbitz.com/refdataContent'>

为什么要求您使用sed?您应该改用为XML设计的工具。您是说要将refdataContent标记的名称更改为属性吗?如果它能很好地处理整个文本,为什么要使用正则表达式?正则表达式只有在需要某种泛化时才有用,并且只有在某种泛化是可接受的情况下才可能使用。@TomFenech Yes我想使用命令sedI将标记更改为refdatacontent我想用删除整行。有没有办法用正则表达式查找和替换?好吧,我误解了你的问题。然后勾选“华盛顿·盖德斯”的答案。
$ sed 's/.*XMLSchema-instance.*/<properties><\/properties>/g' blah.xml
<?xml version='1.0' encoding='UTF-8'?>
<properties></properties>

  <entry key='com.orbitz.reference.api.hotel.HotelPlacementMetagyType.PREMIUMPLACEMENT'><![CDATA[Premium Placement]]></entry>
  <entry key='com.orbitz.reference.api.hotel.HotelAvailability.AVAILABLE'><![CDATA[Available]]></entry>
</refdataContent>
$ sed '/XMLSchema-instance/i\
> <properties>' blah.xml | sed '/XMLSchema-instance/a\
> </properties>'
<?xml version='1.0' encoding='UTF-8'?>
<properties><refdataContent xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.orbitz.com/refdataContent file:///opt/orbitz/schemas/content/refdataContent/1/0/refdataContent.xsd' xmlns='http://www.orbitz.com/refdataContent'>
</properties>
  <entry key='com.orbitz.reference.api.hotel.HotelPlacementMetagyType.PREMIUMPLACEMENT'><![CDATA[Premium Placement]]></entry>
  <entry key='com.orbitz.reference.api.hotel.HotelAvailability.AVAILABLE'><![CDATA[Available]]></entry>
</refdataContent>
<refdataContent xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'xsi:schemaLocation='http://www.orbitz.com/refdataContent file:///opt/orbitz/schemas/content/refdataContent/1/0/refdataContent.xsd'xmlns='http://www.orbitz.com/refdataContent'>
/<refdataContent/,/<\/refdataContent/{s/refdataContent.*/properties>/p;d}