如何提取 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 个字段。
我有这样的字符串
<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 个字段。