如何提取 2 xml 标签之间的字符串?

How to extract string between 2 xml tags?

我有这样的字符串

<anytag>my message</anytag>

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

使用 xmllint (来自 libxml2)

xmllint --xpath '//anytag/text()' <(echo "<anytag>my message</anytag>")
sed 's/<.*>\(.*\)<\/.*>//g' file

I do not want to install xml paser for a lite extract string, my xml message is not complicated

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

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

输出:

my message

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

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

输入:

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

输出:

my message
abc

尝试:

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

将字段分隔符设为“[><]”并打印第 3 个字段。