GNU/Linux >> Znalost Linux >  >> Linux

Jak analyzovat XML pomocí shellscriptu?

Zde je úplný pracovní příklad.
Pokud se jedná pouze o extrahování e-mailových adres, můžete udělat něco jako:
1) Předpokládejme, že soubor XML spam.xml je podobný

<spam>
<victims>
  <victim>
    <name>The Pope</name>
    <email>[email protected]</email>
    <is_satan>0</is_satan>
  </victim>
  <victim>
    <name>George Bush</name>
    <email>[email protected]</email>
    <is_satan>1</is_satan>
  </victim>
  <victim>
    <name>George Bush Jr</name>
    <email>[email protected]</email>
    <is_satan>0</is_satan>
  </victim>
</victims>
</spam>

2) E-maily můžete získat a zpracovat pomocí tohoto krátkého bash kódu:

#!/bin/bash
emails=($(grep -oP '(?<=email>)[^<]+' "/my_path/spam.xml"))

for i in ${!emails[*]}
do
  echo "$i" "${emails[$i]}"
  # instead of echo use the values to send emails, etc
done

Výsledek tohoto příkladu je:

0 [email protected]
1 [email protected]
2 [email protected]

Důležitá poznámka:
Nepoužívejte to na vážné věci. To je v pořádku pro hraní, získávání rychlých výsledků, učení grepu atd., ale měli byste určitě hledat, učit se a používat XML parser pro produkci (viz Michův komentář níže).


Můžete zkusit xmllint

Program xmllint analyzuje jeden nebo více souborů XML, zadaných na příkazovém řádku jako xmlfile. Tiskne různé typy výstupů v závislosti na zvolených možnostech. Je to užitečné pro detekci chyb jak v XML kódu, tak v XML parseru

Umožňuje vám vybrat prvky v dokumentu XML pomocí xpath pomocí volby --pattern.

V systému Mac OS X (Yosemite) je nainstalován ve výchozím nastavení.
Na Ubuntu, pokud ještě není nainstalováno, můžete spustit apt-get install libxml2-utils


Překvapuje mě, že se nikdo nezmínil o xmlsh. Prohlášení o poslání:

Shell příkazového řádku pro XML Založený na filozofii a designu theUnix Shells

xmlsh poskytuje známé skriptovací prostředí, ale speciálně přizpůsobené pro skriptování xml procesů.

Zde je uveden seznam příkazů podobných shellu.

Používám xed příkaz lot, který je ekvivalentní sed pro XML a umožňuje XPath na základě vyhledávání a nahrazení.


K dispozici je také xmlstarlet (který je k dispozici také pro Windows).

http://xmlstar.sourceforge.net/doc/xmlstarlet.txt


Linux
  1. Jak analyzovat XML a odstranit značky pomocí příkladů XPATH v Linuxu (Jak kombinovat více příkazů pomocí PIPE v Linuxu)

  2. Jak připojit soubor pomocí příkazu mail v systému Linux?

  3. Jak analyzovat soubor CSV v Bash?

  1. Jak analyzovat hlavičky HTTP pomocí Bash?

  2. Jak nastavit výchozí Python3.8 na mém Macu pomocí Homebrew?

  3. Jak odstranit soubor bez použití rm?

  1. Jak ladit programy C v Linuxu pomocí gdb

  2. Jak SSH na server pomocí jiného serveru?

  3. Jak zřetězit řetězce v Bash