2017-06-22 137 views
0

我正在嘗試檢索標籤和之間的文本。我正在與SunOS合作。提取兩個html標籤之間的文本

 [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" 
+0

感謝您的建議!但它仍然不會提取標籤之間的文本。 – user3447653

+0

我試圖不使用zcat解壓縮一個.Z文件,然後使用sed結果: zcat file1.Z | sed -n'/DserviceID/s/<\/serviceID.*//p'。但是,我得到空的結果,但有serviceID標籤內的內容。 – user3447653

+0

你能給一個文件的片段嗎?和你嘗試過的,請。 –

相關問題