/ / Ouput grep z nową linią - perl, bash, sed, awk, parsowanie tekstu

Ouput z grep z nową linią - perl, bash, sed, awk, text-parsing

Pracuję nad skryptem, który analizuje informacje w otwartych dokumentach xml i analizuje dane wyjściowe ze skryptu, aby zapewnić wyjście csv.

Utknąłem na ostatniej przeszkodzie.

find /media/path/to/files -type f -iname "*.xlsx" -exec perl parseXML.py {} ; 
| grep -v "Document name|creator|lastModified|Printed|created|modified" 
| tr "n" "."; echo n 
>> list.csv

Problem z tym wyjściem polega na tym, że kończę na jednej masywnej liście dla wszystkich dokumentów i sortowanie tego w pythonie lub perlu pojawia się powyżej mojego poziomu wiedzy.

Miałem nadzieję, że istnieje sposób na uniknięcie tego, występując z przesunięciem za pomocą sed

(find /media/E01880-0-CH5-W001/Working/E01880-4-CH5-E001/ED/ -type f -iname "*.xlsx" -exec perl parseXML.py {} ; | grep "Document name|creator|lastModified|Printed|created|modified" | tr "n" "."; echo )n >> list.csv

Niestety bez skutku, usuwa to tylko linię zawierającą zmodyfikowane informacje.

W końcu tego wieczoru próbowałem zmienić wyjście używając sed i niektórych wyrażeń regularnych

cat PleaseWork.csv | sed  -i "s/modified[^"rn]*./&\n/g" >> NewFile.csv

Gdzie powinna zastąpić teoriazmodyfikowany i wszystkie znaki aż do okresu z dopasowanym wyrażeniem i nową linią, ale otrzymałem błąd sed bez plików wejściowych i myślę, że na razie gapiłem się wystarczająco na ekranie.

Proszę pomóż.

Używam kodu snortdlp wyłączonego z google:

http://snortdlp.googlecode.com/svn-history/r115/trunk/src/python/read_open_xml.pl

Odpowiedzi:

1 dla odpowiedzi № 1

Jeśli poprawnie zinterpretuję twoje pytanie, jesteśpróbując wypisać całą linię (ale nie nową linię) dla wszystkich plików, które pasują do „Nazwa dokumentu”, „twórca” itp., i wydrukować całą linię (i nową linię) dla linii pasujących do „zmodyfikowanych”. Po prostu pomiń grep i zamiast tego użyj awk:

awk "/Document name|creator/{printf "%s.", $0} /modified/"

(Skróciłem mecz, aby był bardziej klarowny - dodaj inne tagi w razie potrzeby).