/ / Zamień pary linii w dokumencie XML używając Sed (lub czegoś podobnego do BASH) i przekonwertuj na CSV - xml, bash, csv, sed, sh

Zamień pary linii w dokumencie XML używając Sed (lub czegoś podobnego do BASH) i przekonwertuj do CSV - xml, bash, csv, sed, sh

Mam dokument PDF, który przekonwertowałem naDokument XML (aby było łatwiej pracować), i muszę usunąć większość danych i zmienić pary linii w formacie csv. Oto co mam w moim XML:

<text top="231" left="75" width="154" height="11" font="2">JGD0002250185412827</text>
<text top="231" left="288" width="122" height="11" font="2">CODE99876</text>
<text top="231" left="482" width="8" height="11" font="2">1</text>
<text top="231" left="555" width="57" height="11" font="2">IP65 5LK</text>
<text top="231" left="696" width="89" height="11" font="2">Malcolm Montgomery</text>
<text top="252" left="75" width="154" height="11" font="2">JGD0012564109019827</text>
<text top="252" left="288" width="122" height="11" font="2">CODE4674</text>
<text top="252" left="482" width="8" height="11" font="2">1</text>
<text top="252" left="551" width="65" height="11" font="2">CV98 3LN</text>
<text top="252" left="680" width="121" height="11" font="2">WILLIAM SHATNER</text>

Muszę uzyskać coś takiego z następującego:

"CODE99876","JGD0002250185412827","IP65 5LK"
"CODE4674","JGD0012564109019827","CV98 3LN"

Zakładam, że to możliwe, ale jak dotąd nie ma szczęścia (katastrofa w rzeczywistości, moje wyniki wyglądają jak rozgniewane dziecko, które pojechało do miasta na wiadrze alfabetti-spaghetti).

Odpowiedzi:

4 dla odpowiedzi № 1
$ awk -F"[<>]" -v OFS="","" "{idx=NR%5; a[idx]=$3} !idx{print """ a[2], a[1], a[4] """}" file
"CODE99876","JGD0002250185412827","IP65 5LK"
"CODE4674","JGD0012564109019827","CV98 3LN"

2 dla odpowiedzi nr 2

To również działa.

#!/usr/bin/awk -f

{
if (/<text .*</text>/) {
i = ++vr % 5
if (i == 0) {
print """ a[2] "","" a[1] "","" a[4] """
} else {
sub(/</text>.*/, "")
sub(/.*<text .*>/, "")
a[i] = $0
}
}
}