【发布时间】:2017-05-18 08:29:05
【问题描述】:
我有一个这样的字符串
<anytag>my message</anytag>
如何使用 sed 或 awk 提取标签之间的消息?
所以我只得到"my message"
【问题讨论】:
-
使用xml解析器来操作xml数据
-
我不想为 lite 提取字符串安装 xml paser,我的 xml 消息并不复杂
我有一个这样的字符串
<anytag>my message</anytag>
如何使用 sed 或 awk 提取标签之间的消息?
所以我只得到"my message"
【问题讨论】:
尝试:
awk -F'[><]' '{print $3}' Input_file
将字段分隔符设为 '[>
【讨论】:
使用 xmllint (来自 libxml2):
xmllint --xpath '//anytag/text()' <(echo "<anytag>my message</anytag>")
【讨论】:
sed 's/<.*>\(.*\)<\/.*>/\1/g' file
【讨论】:
我不想为 lite 提取字符串安装 xml paser,我的 xml 消息并不复杂
对于简单的字符串,您可以使用以下 sed 方法:
s="<anytag>my message</anytag>"
sed 's~<[^<>]*>\([^<>]*\)</[^<>]*>~\1~' <<< $s
输出:
my message
【讨论】:
如果文件的每一行都采用您显示的格式,您可以使用以下awk 命令。
awk -F "<[^<]+?>" '{print $2;}' <filename>
输入:
<anytag>my message</anytag>
<mytag>abc</mytag>
输出:
my message
abc
【讨论】: