我正在尝试检索标签之间的文本。我正在与SunOS合作。
[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>
我尝试了以下选项,但没有帮助:
sed -e 's/<Id>\(.*\)</Id>/\1/'
sed -n '/<Id>/,/<\/Id>/p' test1.txt > test2.txt
任何建议都会对我有所帮助。
答案 0 :(得分:2)
如果grep支持PCRE
grep -Po '<Id>\K[^<]*'
,否则
perl -ne 'print "$_\n" for /<Id>\K[^<]*/g'
另一个选项bash
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"