python-äquivalent zu sed
Gibt es eine Möglichkeit, ohne eine doppelte Schleife zu erreichen, was mit dem folgenden sed-Kommando hat
Eingang:
Time
Banana
spinach
turkey
sed -i "/Banana/s/$/Toothpaste/" file
Ausgabe:
Time
BananaToothpaste
spinach
turkey
Was ich habe, so weit ist es eine doppelte Liste, das würde eine lange Zeit dauern, bis gehen durch beide.
Liste a hat eine Reihe von zahlen
Liste b hat die gleiche Reihe von zahlen, aber in einer anderen Reihenfolge
Für jeden Eintrag im Ein ich möchten, suchen Sie die Zeile B mit der gleichen Anzahl und den Wert C zu Ende.
Hoffe, das macht Sinn, auch wenn in meinem Beispiel nicht.
Ich Tat Folgendes in die Bash und es war Arbeit aber es war super langsam...
for line in $(cat DATSRCLN.txt.utf8); do
srch=$(echo $line | awk -F'^' '{print $1}');
rep=$(echo $line | awk -F'^' '{print $2}');
sed -i "/$(echo $srch)/s/$/^$(echo $rep)/" tmp.1;
done
Dank!
Ihre sed-Beispiel ist nicht äquivalent zu dem, was du eigentlich machen willst.
Also in der bash war ich dabei und es war Arbeit, aber super langsam...
Sie können tatsächlich laufen, sed in python mit der
Schauen Sie in
Ihre sed-code, den bash-code, und Ihre verbale Beschreibung, was du tust, sind drei verschiedene Dinge. Was bist du eigentlich machen willst?
Also in der bash war ich dabei und es war Arbeit, aber super langsam...
Sie können tatsächlich laufen, sed in python mit der
subprocess
Befehl.Schauen Sie in
re.match
und re.sub
, das sind die groben Python-äquivalente zu grep und sed.Ihre sed-code, den bash-code, und Ihre verbale Beschreibung, was du tust, sind drei verschiedene Dinge. Was bist du eigentlich machen willst?
InformationsquelleAutor user1601716 | 2012-10-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit
re.sub()
:Diese Fänge einer Gruppe (zwischen den ersten Klammern), und ersetzt Sie durch sich SELBST (der \Nummer-Teil), gefolgt von einem gewünschte Endung. Es ist erforderlich, um
r''
(raw string), so dass die Flucht korrekt interpretiert werden können.InformationsquelleAutor heltonbiker
Einer spät gekommen, um das Rennen, hier ist meine Umsetzung für die sed in Python:
Beispiele:
ersetzt alle 'foo' mit 'bar' in foo.txt
ersetzt alle 'foo' mit 'bar' in 'foo.txt" und speichern Sie das Ergebnis in "foo.updated.txt".
ersetzt nur das erste vorkommen von 'foo' mit 'bar' und speichern Sie das Ergebnis in der ursprünglichen Datei 'foo.txt'
InformationsquelleAutor Oz123
Wenn Sie mit Python ist3 folgenden Modul werden Ihnen dabei helfen:
https://github.com/mahmoudadel2/pysed
Legen Sie die Modul-Datei in Ihrem Python ist3 Module Weg, dann:
InformationsquelleAutor M. Adel
Können Sie tatsächlich rufen sed von python. Viele Möglichkeiten, dies zu tun, aber ich mag die Verwendung des sh-Moduls. (yum -y install python-sh)
Die Ausgabe von meinem Programm zum Beispiel ist wie folgt.
Hier test_sh.py
Diese funktioniert wahrscheinlich nur unter LINUX.
InformationsquelleAutor shrewmouse
Ist es möglich, dies zu tun mit tmp-Datei mit niedrigen Systemanforderungen und nur eine iteration, ohne Sie zu kopieren ganze Datei in den Speicher:
InformationsquelleAutor Vyktor
massedit
könnten Sie es als Befehl Linie Werkzeug:
Sie können auch verwenden Sie es als eine Bibliothek:
InformationsquelleAutor leafonsword