2017-10-09 23 views
0

私はいくつかのXMLファイルを持っています。私はそれらをPython(メモリの問題)でCSVファイルに解析する前にいくつかの前処理を行いたいと思います。 grep正規表現の行の最初の一致のみ

は私が

grep -Ei "<Title>.*abcd.* </Title>" 

はそれが行を返されない場合は、そのタイトルのために複製Titleフィールドの

<Title> Project abcd </Title> <Id> xxxx</Id> <Group>xxxx</Group>... <Title> Project abcd </Title> 

のようなXMLファイルから「ABCD」が含まれて何かをgrep検索したいと「abcd」がIdまたは他の無関係のフィールドに偶然に含まれている場合

grepを使用して、タイトルフィールドだけに検索したいパターンが含まれている行を返す方法はありますか?

答えて

0

html/xmlを正規表現で解析すると、リスクを知る必要があります。あなたがそれをしなければならない場合は、 は、XML/HTMLパーサを使用して

'<Title>[^<]*abcd[^<]*</Title>' 
+0

ありがとう、これは私が必要とするものです 今のところ。私はリスクを知らなかったが、将来のprojにxmlパーサーを使うことを学ぶだろう。 – Kamisamaaaaa

0

を試しXML/HTMLデータを操作するための正しい方法である:

xmlstarletソリューション:

xmlstarlet sel -t -c "//Title[contains(text(),"abcd")]" -n your.xml 

出力(あなたの現在の入力用):

<Title> Project abcd </Title><Title> Project abcd </Title> 
+0

ありがとう、この便利なXMLパーサーを知っておいてよかったです。 – Kamisamaaaaa

関連する問題