zu interpretieren Ich bin fest auf einen Ausdruck sed Ausdruck, der eine Python-Datei importieren analysiert und extrahiert die Namen der Module.Verwenden Sie sed, um mehrere Zeilen unter der Bedingung
Dies ist ein einfaches Beispiel, das ich unter Verwendung gelöst (Ich brauche die Ausgabe die Modulnamen zu sein, ohne ‚als‘ oder irgendwelche Räume ..):
from testfunctions import mod1, mod2 as blala, mod3, mod4
Was ich habe, so weit:
grep -ir "from testfunctions import" */*.py | sed -E s/'\s+as\s+\w+'//g | sed -E s/'from testfunctions import\s+'//g
Dies bringt mir das erforderliche Ergebnis in einer Situation wie oben.
Das Problem: In Dateien, in denen die Importe sind wie folgt:
from testfunctions import mod1, mod2 as blala, mod3, mod4 \
mod5, mod6 as bla, mod7 \
mod8, mod9 ...
Irgendwelche Ideen, wie ich meine verrohrt Ausdruck über mehrere Zeilen zu handhaben verbessern?
must du 'sed' benutzen? 'awk 'wird einfacher sein (und warum nicht Python?) Viel Glück. – shellter
Sed ist ein Zeileneditor, es liest einzelne Zeilen, Sie können 'N' oder' n' verwenden, um die nächste Zeile zu erhalten. Auch wirst du nur eine einzige Zeile von deinem Grep zurückgeben. – 123
@Shellter Ich denke eigentlich, das ist einfacher in sed. Sie erhalten nur die nächste Zeile, bis keine weiteren Escape-Zeichen und dann ein einfaches Sub. – 123