Oft nutze ich sed und awk und Pipe in der Shell bis ich das gewünschte Ergebnis erreiche.
Monate später brauche ich dann vermutlich genauso lange, um den EinZeiler wieder zu verstehen, wie ich zuvor gebraucht habe um ihn zu schreiben.
Alles was ich mit sed und awk erreichen kann, geht auch mit Perl, besser lesbar ist das aber nicht unbedingt.
python -c erscheint mir zu umständlich - vielleicht ist das aber auch nur eine vorschnelle Einschätzung.
Eben bin ich auf https://code.google.com/archive/p/pyp/ gestoßen. Da scheint es aber seit 2012 nicht mehr weiter zu gehen.
Für mich stellt sich gerade die Frage(n), bleibe ich bei den Linux Werkzeugen, wie sed, awk, etc. Nutze ich (wie die alten Unix-Admins Perl), ist pyp der neue heiße scheiß?
Wie zaubert ihr auf der KommandoZeile?
LinuxShell EinZeiler
Ganz ehrlich, sowas würde ich einfach selbst hinpfuschen:
Kann dann z.B. in der Windows PowerShell so benutzt werden:
Für andere Umgebungen halt entsprechend anpassen...
Und ja, das benutzt eval() und sollte entsprechend nur mit vertrauenswürdigen Eingaben benutzt werden. Ansonsten sollte man sich einen ordentlichen Parser schreiben (oder den Python-Parser benutzen) und die erlaubten Aufrufe entsprechend einschränken. Dabei wünsche ich dann viel Spaß...
Code: Alles auswählen
#!/usr/bin/env python
from __future__ import print_function
import sys
def walk(lines, cmd):
for line in lines:
yield eval(cmd)
def main():
for line in walk(sys.stdin, sys.argv[1]):
print(line, end='')
if __name__ == '__main__':
main()
Code: Alles auswählen
PS C:\Users\Sebastian\Documents> echo spam ham eggs | py -m linewalker "' '.join(line.upper())"
S P A M
H A M
E G G S
Und ja, das benutzt eval() und sollte entsprechend nur mit vertrauenswürdigen Eingaben benutzt werden. Ansonsten sollte man sich einen ordentlichen Parser schreiben (oder den Python-Parser benutzen) und die erlaubten Aufrufe entsprechend einschränken. Dabei wünsche ich dann viel Spaß...
- noisefloor
- User
- Beiträge: 3843
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Gruß, noisefloor
Ich schreibe mir wenn auch ein Skript. Python forciert ja, dass man sauber strukturierten (und lesbaren!) Code schreibt - und das geht bei "Einzeilern" nun mal schlecht. Klar könnte man unter Python auch alles in eine Zeile packen bzw. unlesbaren Code schreiben (super Beispiel: http://preshing.com/20110926/high-resol ... ed-python/), aber das macht nun mal keiner.Wie zaubert ihr auf der KommandoZeile?
Gruß, noisefloor