[gelöst] Bash: Formatier. mehrzeil. Ausgaben (Concatenation)

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
TomL

[gelöst] Bash: Formatier. mehrzeil. Ausgaben (Concatenation)

Beitrag von TomL » 23.02.2017 17:52:02

Moin

Ich würde gerne die Ausgabe von

Code: Alles auswählen

apt search policykit
so umformatieren, dass sie in der Form rauskommt, wie dieses Statement es erzeugt:

Code: Alles auswählen

apt-cache search policykit | awk -F ' - ' '{printf "%-70s%s\n", $1,$2}' | sort -b -g
Ich habe jetzt bereits mit awk, xargs, tr und rudimentär mit sed getestet... aber mit dem Problem bin ich momentan üerfordert. Was wäre ein erfolgreicher Ansatz, um das zu lösen?

Ich würde das vielleicht hinkriegen, wenn ich das in ein eigenes Script packen würde und das regelrecht programmtechnisch angehen würde. Aber das wäre mir als Lösung dann zu 'mächtig'. Toll fände ich es, einen Einzähler via alias in der bashrc nutzen zu können.
Zuletzt geändert von TomL am 24.02.2017 11:05:51, insgesamt 1-mal geändert.

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: Bash: Formatierung mehrzeiliger Ausgaben (Concatenation)

Beitrag von eggy » 23.02.2017 19:07:39

Warum legst Du das nicht als "bash function" in die .bashrc?

breakthewall
Beiträge: 507
Registriert: 30.12.2016 23:48:51

Re: Bash: Formatierung mehrzeiliger Ausgaben (Concatenation)

Beitrag von breakthewall » 23.02.2017 19:28:03

Nun ja was da haben willst ist schon ziemlich umständlich. Und dann noch als Einzeiler. :D

Das hier wäre eine erste Idee dazu:

Code: Alles auswählen

apt search policykit | awk '!/^  /&&NR>1{print OFS}{printf $0}END{print OFS}'
Der Einzeiler bräuchte allerdings noch etwas Feintuning. :wink:

Benutzeravatar
Tintom
Moderator
Beiträge: 3029
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: Bash: Formatierung mehrzeiliger Ausgaben (Concatenation)

Beitrag von Tintom » 23.02.2017 19:41:24

Ich verstehe den Sinn nicht.
Du hast eine Lösung für dein Problem:

Code: Alles auswählen

apt-cache search policykit | awk -F ' - ' '{printf "%-70s%s\n", $1,$2}' | sort -b -g
und lieferst den Hinweis zur Umsetzung gleich mit:
TomL hat geschrieben:einen Einzähler via alias in der bashrc
Und woran hapert jetzt die Umsetzung?

TomL

Re: Bash: Formatierung mehrzeiliger Ausgaben (Concatenation)

Beitrag von TomL » 23.02.2017 21:00:08

breakthewall hat geschrieben:Nun ja was da haben willst ist schon ziemlich umständlich. Und dann noch als Einzeiler.
Na ja, wenn sich ein Stümper damit beschäftigt, kann auch nur stümperei dabei rauskommen... *fg*... das war halt der Grund fürs Posting... und ich dachte mir, frag stattdessen ieber mal einen, der Ahnung hat. :D
breakthewall hat geschrieben:Das hier wäre eine erste Idee dazu:

Code: Alles auswählen

apt search policykit | awk '!/^  /&&NR>1{print OFS}{printf $0}END{print OFS}'
Danke für diesen Startschuss. :THX: Das ist erstmal draus geworden:

Code: Alles auswählen

apt search policykit | awk '!/^  /&&NR>1{print OFS}{printf $0}END{print OFS}' | sed 'n;d' | sed 's/ amd64  /#/g;s/ all  /#/g;s/Installiert//I;s/,automatisch//I; s/\[\]  //g' | awk -F '#' '{printf "%-70s%s\n", $1,$2}'
breakthewall hat geschrieben:Der Einzeiler bräuchte allerdings noch etwas Feintuning.
Das habe ich hingekriegt... aber an Deinem Code sterbe ich mal wieder.... ich guck drauf, es funktioniert wie gewünscht, ich staune, aber ich kapier das erst mal nicht und weiss gar nicht, wo ich da in der Man-Page anfangen soll... :facepalm:
Tintom hat geschrieben:Ich verstehe den Sinn nicht.
Das ist auch nicht immer notwendig. Das war ein konstruiertes Problem, konstruiert um leicht verstanden zu werden. Der Grund war, eine Ableitung für das eigentliche Problem an ganz anderer Stelle zu bekommen. Und breakthewall hat mich große Schritte weiter gebracht.......

Antworten