【问题标题】:How to extract string between 2 xml tags?如何在 2 个 xml 标签之间提取字符串?
【发布时间】:2017-05-18 08:29:05
【问题描述】:

我有一个这样的字符串

<anytag>my message</anytag>

如何使用 sed 或 awk 提取标签之间的消息? 所以我只得到"my message"

【问题讨论】:

  • 使用xml解析器来操作xml数据
  • 我不想为 lite 提取字符串安装 xml paser,我的 xml 消息并不复杂

标签: linux bash awk sed ash


【解决方案1】:

尝试:

awk -F'[><]' '{print $3}'   Input_file

将字段分隔符设为 '[>

【讨论】:

    【解决方案2】:

    使用 xmllint (来自 libxml2)

    xmllint --xpath '//anytag/text()' <(echo "<anytag>my message</anytag>")
    

    【讨论】:

      【解决方案3】:
      sed 's/<.*>\(.*\)<\/.*>/\1/g' file
      

      【讨论】:

        【解决方案4】:

        我不想为 lite 提取字符串安装 xml paser,我的 xml 消息并不复杂

        对于简单的字符串,您可以使用以下 sed 方法:

        s="<anytag>my message</anytag>"
        sed 's~<[^<>]*>\([^<>]*\)</[^<>]*>~\1~' <<< $s
        

        输出:

        my message
        

        【讨论】:

          【解决方案5】:

          如果文件的每一行都采用您显示的格式,您可以使用以下awk 命令。

          awk -F "<[^<]+?>" '{print $2;}' <filename>
          

          输入:

          <anytag>my message</anytag> <mytag>abc</mytag>

          输出:

          my message
          abc
          

          【讨论】:

            猜你喜欢
            • 2016-10-07
            • 1970-01-01
            • 2015-06-27
            • 2012-01-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-25
            相关资源
            最近更新 更多