2014-12-19 128 views
0

使用一行sed命令,我怎麼能得到東西某人值?從xml使用sed打印文本值

<value name="something">someone</value> 

使用正則表達式如下我<value name="(.*)">(.*)<\/value>可以檢索使用本網站https://www.regex101.com/成功的值。但我不知道我怎麼能使用命令行來做到這一點。

在此先感謝。

+0

肯定,我會更新這個問題=) – 2014-12-19 11:24:44

+0

應指定位的東西,有人可能的內容(特殊字符'<> /「')可以在創建攝或者我們可以認爲這是唯一的詞,最終空間 – NeronLeVelu 2014-12-19 12:05:49

回答

1

喜歡的東西

sed 's#.*name="\(.*\)">\(.*\)<.*#\1 \2#g' 

測試

$ echo "<value name=\"something\">someone</value>" | sed 's#.*name="\(.*\)">\(.*\)<.*#\1 \2#g' 
something someone 
+1

完美,像一個魅力工作! – 2014-12-19 11:30:18

+0

@Thales很高興聽到它幫助:) – nu11p01n73R 2014-12-19 11:32:11

0

試試這個。

sed -r 's/.*"(.*)">(.*)<.*>$/\1 \2/'

+1

你可以使用'sed -r's /.*"(.*)「 >(。*)<。* $/\ 1 \ 2 /'file'而不是 – 2014-12-19 12:04:52

+0

@KasiyA是的。 – 2014-12-19 12:07:18

0

注意到usual caveats有關使用正則表達式解析XML,這裏是在動作的XML解析工具對您的樣本數據,與「名稱」屬性認定的屬性值和標籤值的「值」標籤。

xmlstarlet sel -t -v '//value[@name]/@name' -n -v '//value[@name]' -n file.xml 
something 
someone