ubuntuusers.de

Befehlsausgabe automatisch "formatieren"?

Status: Gelöst | Ubuntu-Version: Ubuntu 22.04 (Jammy Jellyfish)
Antworten |

Bournless

Anmeldungsdatum:
4. Mai 2019

Beiträge: 915

Hallo, ich suche nach einer Möglichkeit einen Befehl so zu erweitern, dass die Ausgabe übersichtlicher (formatiert) ausgegeben wird.

Bisher (Darstellung als Ausschnitt):

sudo repquota -g /
*** Report for group quotas on device /dev/mapper/ubuntu--vg-ubuntu--lv
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
Group           used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
staff     --       4       0       0              1     0     0       
systemd-journal --   73752       0       0             10     0     0       
systemd-network --      16       0       0              4     0     0       
messagebus --      36       0       0              1     0     0       
systemd-timesync --       4       0       0              2     0     0       
sambashare --       4       0       0              1     0     0       
winbindd_priv --       4       0       0              1     0     0       
domänen-benutzer +-    5412    2930    2930  6days      59     0     0       
#62803    --       4       0       0              1     0     0       

Gewünscht:

sudo repquota -g / ????????????
*** Report for group quotas on device /dev/mapper/ubuntu--vg-ubuntu--lv
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
Group                 used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
staff             --     4       0       0              1     0     0       
systemd-journal   -- 73752       0       0             10     0     0       
systemd-network   --    16       0       0              4     0     0       
messagebus        --    36       0       0              1     0     0       
sambashare        --     4       0       0              1     0     0       
winbindd_priv     --     4       0       0              1     0     0       
domänen-benutzer  +-  5412    2930    2930  6days      59     0     0       
#62803            --     4       0       0              1     0     0   

Ich bin für jeden Hinweis oder jede Lösung dankbar.

Gruß
Bournless

dschwalb

Anmeldungsdatum:
16. November 2021

Beiträge: 84

Naja, die Ausgabe wurde ja vom Entwickler programmiert. Da kannste nicht viel machen, außer du lernst die zugrunde liegende Sprache und besorgst dir die Quellen.

Wenn du aber mal in die Manpage von repquota reinschaust: mit der Option "-t" wird die erste Spalte der Tabelle auf 9 Zeichen begrenzt, wahrscheinlich hilft das schon.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13205

Als Startpunk geht vielleicht

1
$ ruby -pe '$_.sub!(/^.*?[-+]-/) {|s|s.ljust(30)}'

Korrektur Regex

shiro Team-Icon

Supporter

Anmeldungsdatum:
20. Juli 2020

Beiträge: 1270

Na ja, das Hauptproblem ist, dass in Spalte 6 in der Regel nichts steht oder mal "6days". Das kann man über awk oder sed lösen. Ich habe jetzt mal einen Vorschlag mit sed, der wie folgt ausschaut:

sudo repquota -g / >$$
sed -nE '1,2p;3s/ File/\tFile/p;4s/([a-z]) +([a-z])/\1\t\2/gp;s/\t/\t\t/;5p' $$;sed 1,5d $$ | sed 's/        / \x01 /g' | tr -s ' ' | column -t -o $'\t' -R 3,4,5,6,7,8 | sed 's/\t/ /'
*** Report for group quotas on device /dev/mapper/ubuntu--vg-ubuntu--lv
Block grace time: 7days; Inode grace time: 7days
                        Block limits                	File limits
Group		used	soft	hard	grace	used	soft	hard	grace
----------------------------------------------------------------------
staff            --	    4	   0	   0	     	 1	0	0
systemd-journal  --	73752	   0	   0	     	10	0	0
systemd-network  --	   16	   0	   0	     	 4	0	0
messagebus       --	   36	   0	   0	     	 1	0	0
systemd-timesync --	    4	   0	   0	     	 2	0	0
sambashare       --	    4	   0	   0	     	 1	0	0
winbindd_priv    --	    4	   0	   0	     	 1	0	0
domänen-benutzer +-	 5412	2930	2930	6days	59	0	0
#62803           --	    4	   0	   0	     	 1	0	0

Wenn man etwas Abstriche bei der Formatierung machen kann, dann geht auch ganz einfach ein

sudo repquota -g / | sed 1,5d | column -t 

dschwalb

Anmeldungsdatum:
16. November 2021

Beiträge: 84

shiro schrieb:

Na ja, das Hauptproblem ist, dass in Spalte 6 in der Regel nichts steht oder mal "6days".

Also, wenn ich mir die Ausgabe im Startbeitrag genau angucke und mal beispielhaft hier und dort durchzähle, scheint mir die Verschiebung aber tatsächlich an den Ausgaben > 9 Zeichen in Spalte 1 zu hängen. Dann würde doch die erwähnte Option "-t" völlig ausreichen...

Der Platz in der Spalte, in der einmal "6days" auftaucht, ist doch in jeder Zeile gleich groß...

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9708

Wohnort: Münster

Bournless schrieb:

[…] einen Befehl so zu erweitern, dass die Ausgabe übersichtlicher (formatiert) ausgegeben wird

Du suchst das Programm column.

Bournless

(Themenstarter)

Anmeldungsdatum:
4. Mai 2019

Beiträge: 915

Ich bin begeistert von all der spontanen Hilfe - Vielen, vielen Dank!

@dschwalb Ja, die Option -t bringt mich schon mal weiter. Allerdings kann/will ich mit der Begrenzung der ersten Spalte auf 9 Zeichen nicht "leben" 😉 Das ist halt nicht mein Ziel.

@rklm Ich denke mal, dass Ruby auf einem Ubuntu-Server nicht vorinstalliert ist.

@shiro Deine Lösung ist IMHO die beste Antwort auf meine Frage - Danke! 👍

@kB Nein, ich möchte nicht ein "anderes" Programm zur Lösung meiner Ausgangsfrage benutzen.

Gruß
Bournless

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17621

Wohnort: Berlin

Bournless schrieb:

@kB Nein, ich möchte nicht ein "anderes" Programm zur Lösung meiner Ausgangsfrage benutzen.

Sed ist auch ein externes Programm.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
cat repquota.lst | sed -r "s/-{8}/------- /g" | column -t 
***               Report   for      group    quotas   on       device   /dev/mapper/ubuntu--vg-ubuntu--lv  
Block             grace    time:    7days;   Inode    grace    time:    7days                              
Block             limits   File     limits                                                                 
Group             used     soft     hard     grace    used     soft     hard                               grace
-------           -------  -------  -------  -------  -------  -------  -------                            ------
staff             --       4        0        0        1        0        0                                  
systemd-journal   --       73752    0        0        10       0        0                                  
systemd-network   --       16       0        0        4        0        0                                  
messagebus        --       36       0        0        1        0        0                                  
systemd-timesync  --       4        0        0        2        0        0                                  
sambashare        --       4        0        0        1        0        0                                  
winbindd_priv     --       4        0        0        1        0        0                                  
domänen-benutzer  +-       5412     2930     2930     6days    59       0                                  0
#62803            --       4        0        0        1        0        0                                  

oder vielleicht so:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
head -3 repquota.lst ; sed "1,3d" repquota.lst | sed -r "s/-{8}/------- /g" | column -t -R "3,4,5,6,7,8" 
*** Report for group quotas on device /dev/mapper/ubuntu--vg-ubuntu--lv
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
Group             used        soft     hard    grace     used     soft     hard  grace
-------           -------  -------  -------  -------  -------  -------  -------  ------
staff             --             4        0        0        1        0        0  
systemd-journal   --         73752        0        0       10        0        0  
systemd-network   --            16        0        0        4        0        0  
messagebus        --            36        0        0        1        0        0  
systemd-timesync  --             4        0        0        2        0        0  
sambashare        --             4        0        0        1        0        0  
winbindd_priv     --             4        0        0        1        0        0  
domänen-benutzer  +-          5412     2930     2930    6days       59        0  0
#62803            --             4        0        0        1        0        0    

Bournless

(Themenstarter)

Anmeldungsdatum:
4. Mai 2019

Beiträge: 915

@user_unknown

Warum sollte ich mich jetzt rechtfertigen?

Der von shiro erweiterte Befehl

sudo repquota -g / | sed 1,5d | column -t

hat mich ans Ziel gebracht, ohne eine externes Programm auf einem Ubuntu-Server zu installieren!

Meine Ausgangsfrage war:

ich suche nach einer Möglichkeit einen Befehl so zu erweitern, dass die Ausgabe übersichtlicher (formatiert) ausgegeben wird.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17621

Wohnort: Berlin

Bournless schrieb:

@user_unknown

Warum sollte ich mich jetzt rechtfertigen?

Du sollst Dich nicht rechtfertigen, aber ausprobieren, was man Dir vorschlägt. ☺

Der von shiro erweiterte Befehl

sudo repquota -g / | sed 1,5d | column -t

hat mich ans Ziel gebracht, ohne eine externes Programm auf einem Ubuntu-Server zu installieren!

Ah, ich dachte Du meinst den 1., nicht den 2. Vorschlag shiros.

Du hattest nur geschrieben:

@shiro Deine Lösung ist IMHO die beste Antwort auf meine Frage - Danke! 👍

ohne zu spezifizieren, welche der 2 Lösungen jetzt die beste Antwort sei.

Aber shiros Vorschlag umfasst ja columnn und sed - was müsstest Du denn zusätzlich installieren?

Meine Ausgangsfrage war:

ich suche nach einer Möglichkeit einen Befehl so zu erweitern, dass die Ausgabe übersichtlicher (formatiert) ausgegeben wird.

Ja, was Du mit "Befehl erweitern" meinst, das die Aufrufe shiros umfasst, aber meine nicht, ist unklar. Aber wenn Dir die gekürzte Aussage shiros zusagt habe ich nichts besseres anzubieten und auch sonst wäre mein Vorschlag vielleicht nur leichter zu verstehen/warten gewesen.

Antworten |