Linux 如何提取两个xml标记之间的字符串?

Linux 如何提取两个xml标记之间的字符串?,linux,bash,awk,sed,ash,Linux,Bash,Awk,Sed,Ash,我有一根这样的绳子 <anytag>my message</anytag> 我的留言 如何使用sed或awk在标记之间提取消息? 因此,我使用xmllint(来自libxml2)仅获得“我的消息”: xmllint--xpath'//anytag/text()'sed的/\(.*\)/\1/g文件 我不想为lite提取字符串my xml安装xml paser 信息并不复杂 对于简单字符串,您可以使用以下方法: s="<anytag>my message&

我有一根这样的绳子

<anytag>my message</anytag>
我的留言
如何使用sed或awk在标记之间提取消息? 因此,我使用xmllint(来自libxml2)仅获得“我的消息”:

xmllint--xpath'//anytag/text()'
sed的/\(.*\)/\1/g文件

我不想为lite提取字符串my xml安装xml paser 信息并不复杂

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

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

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

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


awk-F'[>使用xml解析器处理xml数据我不想为lite提取字符串安装xml paser,我的xml消息并不复杂
s="<anytag>my message</anytag>"
sed 's~<[^<>]*>\([^<>]*\)</[^<>]*>~\1~' <<< $s
my message
awk -F "<[^<]+?>" '{print $2;}' <filename>
my message
abc
awk -F'[><]' '{print $3}'   Input_file