LinuxShell EinZeiler

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
hal9001
User
Beiträge: 4
Registriert: Mittwoch 11. Januar 2017, 11:40

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?
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich baue Skripte in Python. Und die haben nicht den Anspruch einzeilig zu sein. Gesammelt werden sie einfach in ~/bin
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ganz ehrlich, sowas würde ich einfach selbst hinpfuschen:

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()
Kann dann z.B. in der Windows PowerShell so benutzt werden:

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
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ß... :)
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Wie zaubert ihr auf der KommandoZeile?
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.

Gruß, noisefloor
Antworten