staging.inyokaproject.org

ungewollte Ausgabe bei Nutzung von curl/sed/grep

Status: Ungelöst | Ubuntu-Version: Ubuntu GNOME 14.04 (Trusty Tahr)
Antworten |

UnitedBlaze

Anmeldungsdatum:
30. Mai 2018

Beiträge: Zähle...

Moin moin, ich lade eine HTML-Datei herunter, filtere diese mit sed und suche dann etwas mit grep. Komischerweise erfolgt dann zusätzlich immer eine solche Asugabe:

1
2
3
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--

Woran liegt das und wie stelle ich es ab??

MfG UnitedBlaze

cosinus

Avatar von cosinus

Anmeldungsdatum:
11. Mai 2010

Beiträge: 1374

Ich galube dazu müsstest du mal deinen gesamten Befehl posten, den du absetzt und der diese Ausgabe erzeugt...

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

Abgesehen davon, dass man HTML nicht mit zeilenbasiert arbeitenden Tools wie grep oder sed parsen sollte (sondern mit einem richtigen HTML-Parser) solltest du mal einen Blick in die Manpage zu curl werfen:

       -s, --silent
              Silent or  quiet  mode.  Don't  show  progress  meter  or  error
              messages.  Makes Curl mute.

UnitedBlaze

(Themenstarter)

Anmeldungsdatum:
30. Mai 2018

Beiträge: Zähle...

cosinus schrieb:

Ich galube dazu müsstest du mal deinen gesamten Befehl posten, den du absetzt und der diese Ausgabe erzeugt...

Mein Code sieht grob so aus:

1
curl file:///home/.../Test.html | sed 's/<[^>]\+>//g' | grep "Hallo"

seahawk1986 schrieb:

Abgesehen davon, dass man HTML nicht mit zeilenbasiert arbeitenden Tools wie grep oder sed parsen sollte (sondern mit einem richtigen HTML-Parser) solltest du mal einen Blick

Welches Tool empfehlst du mir denn?

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

UnitedBlaze schrieb:

Welches Tool empfehlst du mir denn?

Das hängt davon ab, was man damit machen will - mit BeautifulSoup kann man recht bequem arbeiten, ohne sich mit XPath oder XSLT herumschlagen zu müssen (wenn man damit kein Problem hat, kann man lxml nehmen).

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4735

@UnitedBlaze: Mal ein Beispiel warum man sed/grep da nicht vertrauen kann:

$ echo '<foo bar=">" baz="Hallo">text</foo>' | sed 's/<[^>]\+>//g' | grep 'Hallo'
" baz="Hallo">text 

Dann gäbe es noch Kommentare und bei XHTML CDATA-Elemente bei denen leicht etwas enthalten sein kann was das sed nicht ausfiltert.

Man könnte die XML/HTML-Tools vom w3c verwenden:

1
curl file:///home/.../Test.html | hxclean | hxselect -c -s '\n' . | grep 'Hallo'

cosinus

Avatar von cosinus

Anmeldungsdatum:
11. Mai 2010

Beiträge: 1374

UnitedBlaze schrieb:

cosinus schrieb:

Ich galube dazu müsstest du mal deinen gesamten Befehl posten, den du absetzt und der diese Ausgabe erzeugt...

Mein Code sieht grob so aus:

1
curl file:///home/.../Test.html | sed 's/<[^>]\+>//g' | grep "Hallo"

Wieso gehst du mit curl auf eine lokale Datei los? Wieso geht nicht sowas?

1
sed 's/foo/bar' /home/blubb/datei.irgendwas | grep -i suchmuster

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4735

@cosinus: Ich vermute mal die lokale Datei ist zum testen, damit es schneller geht und nicht jedes mal der Server belastet wird.

UnitedBlaze

(Themenstarter)

Anmeldungsdatum:
30. Mai 2018

Beiträge: 28

cosinus schrieb:

Wieso gehst du mit curl auf eine lokale Datei los? Wieso geht nicht sowas?

Marc_BlackJack_Rintsch schrieb:

@cosinus: Ich vermute mal die lokale Datei ist zum testen, damit es schneller geht und nicht jedes mal der Server belastet wird.

Ja genau ist jetzt nur vorläufig! Wie kann ich mit curl eine Datei direkt in einem Unterordner von dem Ordner wo ich mein Skript aufrufe öffnen? habe probiert:

1
curl file:///./Unterordner/test.html

hat aber nicht so ganz funktioniert.. :S

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4735

URLs mit Schema können nicht relativ sein.

cosinus

Avatar von cosinus

Anmeldungsdatum:
11. Mai 2010

Beiträge: 1374

UnitedBlaze schrieb:

Wie kann ich mit curl eine Datei direkt in einem Unterordner von dem Ordner wo ich mein Skript aufrufe öffnen?

Äh häh? Den Unterordner vorher vllt mal angeben? 😀
Wie ich schon sagte brauchst du aber kein curl für lokale Dateien.

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4735

@cosinus: Der Unterordner war angegeben. Das Problem ist, das URL mit Schema nicht relativ sein können, es reicht also nicht den Unterordner anzugeben, man muss auch alles von der Wurzel aus angeben. Es gibt Programme die auch mit relativen Pfaden in URLs mit Schema umgehen können, das ist aber nicht mit der Spezifikation konform.

cosinus

Avatar von cosinus

Anmeldungsdatum:
11. Mai 2010

Beiträge: 1374

Schön, also nochmal, wieso muss man unbedingt mit curl auf lokale Dateien losgehen? Wenn dann muss man den kompletten Pfad angeben. Ohne curl also so wie man es sonst macht mit lokalen Dateien kann man auch rel. Pfade verwenden.

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4735

@cosinus: Nochmal: Weil da eigentlich keine lokale Datei steht, sondern nur jetzt zu Testzwecken. Wenn Dir das zu sehr zu schaffen macht, dann denk Dir einfach…

1
curl "$url" | hxclean | hxselect -c -s '\n' . | grep 'Hallo'

…und ignoriere das $url auch eine file:-URL sein könnte.

Und bitte jetzt nicht fragen warum da unbedingt nach 'Hallo' gegrept werden muss. Ist ziemlich sicher auch nur als Beispiel zum testen. 😉

cosinus

Avatar von cosinus

Anmeldungsdatum:
11. Mai 2010

Beiträge: 1374

Ich hab deine Vermutung vorher gelesen, trotzdem muss man bei dieser Trockenübung nicht mit curl auf lokale Dateien losgehen. Man kann auch die entfernte Datei erstmal runterladen nach /tmp oder so und dann alles mit ihr anstellen was man will. Lokal und ohne curl funktionieren dann auch relative Pfadangaben wieder.

Antworten |