【问题标题】:linux extract string between tags and paste between others tagslinux在标签之间提取字符串并在其他标签之间粘贴
【发布时间】:2015-10-10 06:34:27
【问题描述】:

我有带有 xml 文本的文件,例如:

<tag1>unknown string1</tag1>blablabla....<tag2></tag2>

我想使用 sed(或其他命令)在标签 1 之间提取字符串并在标签 2 之间粘贴,结果:

<tag1>unknown string1</tag1>blablabla....<tag2>unknown string1</tag2>

谢谢。

我找到了解决办法!

sed 's/\(.*<tag1>\)\(.*\)\(<\/tag1>.*<tag2>\)\(**\)\(<\/tag2>.*\)/\1\2\3\2\5/' file

将整个文件分成参考文献,然后为了方便重新排序。

【问题讨论】:

  • 感谢 Kalanidhi 和 Potong 的回答,但它们不起作用。我编辑问题以获得更多说明。

标签: linux sed


【解决方案1】:

试试这个 sed 命令

命令:

sed 'N;s/\(<tag1>\(.*\)<\/tag1>\n<tag2>\).*\(<\/tag2>\)/\1\2\3/' FIleName

输出:

<tag1>unknown string1</tag1>
<tag2>unknown string1</tag2>

【讨论】:

    【解决方案2】:

    这可能对你有用(GNU sed):

    sed -r '/<tag1>/h;/<tag2>/{G;s/>.*(<.*)\n.*>(.*)<.*/>\2\1/}' file
    

    这会在保持空间 (HS) 中创建 tag1 的副本,并在遇到 tag2 时将 HS 附加到当前行并使用模式匹配来生成所需的字符串。

    注意这假定每行一个标签。

    【讨论】:

      猜你喜欢
      • 2012-01-29
      • 2014-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多