5 Stimmen

Shell cut Befehl, um Zeichen zu entfernen

Der aktuelle Code unter Berücksichtigung von grep & cut gibt 51315123&category_id aus. Ich muss &category_id entfernen. Kann cut dazu verwendet werden?

... | tr '?' '\n' | grep "^recipient_dvd_id=" | cut -d '=' -f 2 >> dvdIDs.txt

1 Stimmen

Die Kombination von grep, cut und möglicherweise einem weiteren cut sollte wahrscheinlich auf einen einzelnen Befehl reduziert werden, entweder sed oder einem seiner leistungsstärkeren Brüder - awk, perl oder python (oder einer anderen Skriptsprache Ihrer Wahl). Alles andere beiseite, wenn das Datenvolumen, das verarbeitet werden soll, in den Gigabyte-Bereich zu reichen beginnt, werden die mehrfachen Pipe-Operationen etwas zu einem Engpass.

11voto

Owen Punkte 37648

Ja, das würde ich denken

... | cut -d '&' -f 1

2voto

brightlancer Punkte 2009

Wenn Sie bereit sind, AWK zu verwenden:

... | tr '?' '\n' | awk -F'[=&]' '/^recipient_dvd_id=/ {print $2}' >> dvdIDs.txt

AWK behandelt das Regex und teilt die Felder auf, in diesem Fall unter Verwendung von '=' und '&' als Feldtrennzeichen und druckt die zweite Spalte aus. Andernfalls benötigen Sie eine zweite cut Anweisung.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X