it-swarm.com.de

So trennen Sie Felder mit Leerzeichen oder Tabulator in awk

Während ich mit awk spielte, kam ich zu folgendem Ergebnis:

ls -la >> a.txt ; awk {'print $5  $1'} a.txt ;

Dies ergibt eine Ausgabe wie:

53277-rw-------
52347-rw-------

Wie kann ich ein Leerzeichen zwischen diesen beiden Freunden der Ausgabe bekommen?

48
rɑːdʒɑ

Ändern Sie einfach die Zeile zu

ls -la >> a.txt ; awk {'print $5 "        " $1'} a.txt ;

dies sollte die Ausgabe mit Leerzeichen drucken.

Hoffe das hilft.

Bearbeiten:

Wie von McNisse vorgeschlagen, können Sie printf verwenden, wodurch Sie ein gutes Ausgabeformat erhalten

ls -la >> a.txt ; awk {'printf ("%5s\t%s\n", $5, $1)'} a.txt ;
69
devav2

Eine andere awk-spezifische Technik ist der "Output Field Separator".

ls -la | awk -v OFS='\t' '{print $5, $1}'

Das Komma ist hier entscheidend.

65
glenn jackman

Ein einfacher Weg, um Tabs zu bekommen, ist:

awk {'print $5"\t"$1'}
7
becko

Ich weiß, dass dies ein alter Thread ist, aber ich lerne gerade und fand diese Beiträge hilfreich. Meine beste Lösung war es, mit gawk Leerzeichen zwischen den Variablen einzufügen.

ls -la | gawk '{print $1, $9}'
4

Fügen Sie zum Platzieren des Leerzeichens zwischen den Argumenten einfach " " hinzu, z. awk {'print $5" "$1'}.

Es wird jedoch nicht empfohlen , Ausgabe des Befehls ls zu analysieren , da dies nicht zuverlässig ist und die Ausgabe für den Menschen bestimmt ist , keine Skripte. Verwenden Sie daher alternative Befehle wie find oder stat.

Hier ist ein Beispiel mit GNU stat:

$ stat -t *
001.txt 23 8 81a4 501 20 1000004 242236402 1 0 0 1460260387 1460260239 1460260239 1460260194 4096
7c1c.txt 21 8 81a4 501 20 1000004 242236595 1 0 0 1460261322 1460260486 1460260486 1460260486 4096

hiermit drucken Sie maschinenfreundliche Ausgaben (in knapper Form), sodass Sie genau das erhalten, was Sie benötigen. Verwenden Sie dann -c, um ein bestimmtes Format zu verwenden, oder verwenden Sie awk, cut oder read, um die richtigen Spalten abzurufen.

Überprüfen Sie stat --help für weitere Optionen. Wenn Sie beispielsweise den Tag der Änderung drucken möchten, aktivieren Sie dieses Beispiel .

1
kenorb