16 Stimmen

Python-Äquivalent zu perl -pe?

Ich muss einige Zahlen aus einigen Textdateien heraussuchen. Ich kann die benötigten Zeilen mit grep heraussuchen, aber ich wusste nicht, wie ich die Zahlen aus den Zeilen extrahieren kann. Ein Kollege hat mir gezeigt, wie ich das mit Bash und Perl machen kann:

cat results.txt | perl -pe 's/.+(\d\.\d+)\.\n/\1 /'

Allerdings programmiere ich normalerweise in Python, nicht in Perl. Meine Frage ist also, ob ich Python auf dieselbe Weise hätte verwenden können. D.h., hätte ich etwas von Bash nach Python pipen können und dann das Ergebnis direkt nach stdout bekommen? ... wenn das Sinn macht. Oder ist Perl in diesem Fall einfach praktischer?

1 Stimmen

Sie könnten es sich noch einmal überlegen und das gesamte Parsing in Python durchführen. Es wäre wahnsinnig einfach, die Greping von Python zu tun. Wenn Sie Probleme haben, stellen Sie einfach eine weitere Frage mit dem Wortlaut "Wie kann ich diese Zeilen in Python analysieren", und 5 Minuten später haben Sie den Code

0 Stimmen

@TJD: Stimmt. Ich werde das in Betracht ziehen.

0 Stimmen

Nachdem ich einige Antworten und Methoden geprüft habe, frage ich: Würde es funktionieren, wenn Sie nur grep -o die nur den übereinstimmenden Teil der Zeile ausgibt?

1voto

Joshua Goldberg Punkte 4405

Zitiert von https://stackoverflow.com/a/12259852/411282 :

for ln in __import__("fileinput").input(): print ln.rstrip()

Siehe die oben verlinkte Erklärung, die jedoch viel mehr von dem tut, was perl -p einschließlich der Unterstützung für mehrere Dateinamen und stdin wenn kein Dateiname angegeben wird.

https://docs.python.org/3/library/fileinput.html#fileinput.input

0voto

Camilo Díaz Repka Punkte 4807

Sie können Python verwenden, um Code direkt von Ihrer Bash-Befehlszeile auszuführen, indem Sie python -c oder Sie können Eingaben verarbeiten, die über die Pipeline nach stdin geleitet werden, indem Sie sys.stdin siehe aquí .

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