Seite 1 von 1

LinuxShell EinZeiler

Verfasst: Mittwoch 20. September 2017, 12:24
von hal9001
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?

Re: LinuxShell EinZeiler

Verfasst: Mittwoch 20. September 2017, 12:48
von __deets__
Ich baue Skripte in Python. Und die haben nicht den Anspruch einzeilig zu sein. Gesammelt werden sie einfach in ~/bin

Re: LinuxShell EinZeiler

Verfasst: Mittwoch 20. September 2017, 21:20
von snafu
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ß... :)

Re: LinuxShell EinZeiler

Verfasst: Donnerstag 21. September 2017, 06:12
von noisefloor
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