Bash 在两个html标记之间提取文本

Bash 在两个html标记之间提取文本,bash,shell,Bash,Shell,我正在尝试检索标记和之间的文本。我和苏诺斯一起工作 [SESSIONID=9sfhksfksafa,LOGINID=1,CLIENTIP=1.22.34.5,REMOTEADDRESS=1.22.34.5] 2017-06-01T18:09:20 INFO transaction - Soap Outbound message: <soapenv:Envelope xmlns:soapenv="http://org.inq"><Id>Id1</Id&

我正在尝试检索标记和之间的文本。我和苏诺斯一起工作

       [SESSIONID=9sfhksfksafa,LOGINID=1,CLIENTIP=1.22.34.5,REMOTEADDRESS=1.22.34.5] 2017-06-01T18:09:20  INFO transaction - Soap Outbound message: <soapenv:Envelope xmlns:soapenv="http://org.inq"><Id>Id1</Id><header><userID>321</userID><organization>abc</organization><countryCode>CA</countryCode><languageCode>en</languageCode><userLocation>internet</userLocation>
       <timestamp>2017-06-01T18:09:20.974-04:00</timestamp><channel>Mobile</channel>
[SESSIONID=9sfhksfksafa,LOGINID=1,CLIENTIP=1.22.34.5,REMOTEADDRESS=1.22.34.5]2017-06-01T18:09:20信息事务-Soap出站消息:Id1321abcCAeninternet
2017-06-01T18:09:20.974-04:00手机
我尝试了以下选项,但没有帮助:

      sed -e 's/<Id>\(.*\)</Id>/\1/'
      sed -n '/<Id>/,/<\/Id>/p' test1.txt > test2.txt
sed-e的/\(.\)/\1/'
sed-n'//,//p'test1.txt>test2.txt
任何建议都会对我很有帮助。

如果grep支持PCRE

grep -Po '<Id>\K[^<]*'
grep-Po'\K[^如果grep支持PCRE

grep -Po '<Id>\K[^<]*'

grep-Po'\K[^网站上已经有无数的问题和答案可以告诉你怎么做(好的会提到你为什么不应该做)。网站上已经有无数的问题和答案可以告诉你怎么做(好的会提到你为什么不应该做)。谢谢你的建议!!但它仍然无法提取标记之间的文本。我尝试不使用zcat解压.Z文件,然后使用管道sed生成结果:zcat file1.Z | sed-n'/DserviceID/s/你能给出一个文件片段吗?以及你尝试过的内容。谢谢你的建议!!但它仍然无法提取标记之间的文本。我是尝试不使用zcat解压.Z文件,然后使用管道sed生成结果:zcat file1.Z | sed-n'/DserviceID/s/您能给出一个文件片段吗?请给出您尝试的内容。
while IFS=\> read -d \< tag value; do echo "$tag $value"; done
var='<Id>2017-06-01T18:09:20.974-04:00</Id>'
var=${var#*<Id>}   #remove prefix
var=${var%</Id>*}  #remove suffix
echo "$var"