Wie Zeichen in Zeichenfolgen eingefügt werden können, die zu einer Spalte gehören, die aus einem Eingabebefehl mit awk und sed resultiert

636
Ricky Tigg

Hier ist eine Formel, die eine geeignete Grundlage für meine Zwecke hat - unter anderem werden nur Dateien mit Größen von 1024, 2 ^ 10 - gedruckt . Die Größe der beteiligten Datei beträgt 1382 Bytes (1,35 KiB ):

# ls -lh | grep -v '^d' | sed -n '2p' | awk '' 1,4K anaconda-ks.cfg 

Bedingungen für die Anwendung in der Formel:

  • Fügen Sie vor dem letzten Zeichen, das zur ersten Spalte der Ausgabe gehört, '' ein .
  • Fügen Sie nach dem letzten Zeichen, das zur ersten Spalte der Ausgabe gehört, " iB " ein .
  • zwei Nachkommastellen auf den nächsten Wert (zB 1.095 = 1.09, 1.096 = 1,10);
  • Spalten drucken, die sich auf Größen und Dateien beziehen.

Ausgabe um einmalige Bedingungen zu erreichen :

# ls -lh | grep -v '^d' | sed <expression> | awk <expression> 1,35 KiB anaconda-ks.cfg 
0
Bitte erläutern Sie, welche Ergebnisse Sie erzielen und welche Ergebnisse Sie aktuell erzielen. Es wäre auch hilfreich zu erklären, warum Sie dies überhaupt tun. uSlackr vor 5 Jahren 1

1 Antwort auf die Frage

0
oliv

Sie sollten es vermeiden, die Ausgabe von zu analysierenls . Verwenden Sie stattdessen den statBefehl.

Und anstatt zu versuchen, ein neues Zahlenformat zu fälschen, verwenden Sie den Befehl numfmtvon coreutils.

Sie könnten also folgendes verwenden:

for i in *; do  printf "%s %s\n" $(stat -c %s "$i" | numfmt --to=iec-i --suffix=B --format "%.2f") "$i" done