Während des Spielens awk
kam ich zur Ausführung:
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?
command-line
text-processing
awk
rɑːdʒɑ
quelle
quelle
ls
. Dies wird Sie früher oder später in den Rücken beißen.print $5 $1
awk {'print $5 $1'} a.txt
) gedruckt werden . Sie fragen, wie ein Leerzeichen zwischen Feld 1 und Feld 5 eingefügt werden soll.Antworten:
Ändern Sie einfach die Zeile zu
Dies sollte die Ausgabe mit Leerzeichen drucken.
Hoffe das hilft.
Bearbeiten:
Wie von McNisse vorgeschlagen, können Sie printf verwenden, um ein gutes Ausgabeformat zu erhalten
quelle
printf
Funktion bietet eine bessere Kontrolle, insbesondere wenn Sie Zahlen formatieren möchten.printf("%s\t%s\n", $5, $1)
5s
bedeutet inawk {'printf ("%5s\t%s\n", $5, $1)'}
Eine andere awk-spezifische Technik ist der "Output Field Separator".
Das Komma ist hier entscheidend.
quelle
$1
ich muss zu Newline gehenEin einfacher Weg, um Tabs zu bekommen, ist:
quelle
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.
quelle
gawk
,mawk
Oder jede andereawk
, sie alle Einsatzräume , wenn Sie das Komma, das ist es, was diese Antwort sagt.ls -la | awk '{print $1, $9}'
. Wie Muru sagte,gawk
ist nicht notwendig.Um das Leerzeichen zwischen den Argumenten einzufügen
" "
, fügen Sie einfach zawk {'print $5" "$1'}
.Es wird jedoch nicht empfohlen, die Befehlsausgabe zu analysieren
ls
, da sie nicht zuverlässig ist und die Ausgabe für Menschen und nicht für Skripte bestimmt ist. Verwenden Sie daher alternative Befehle wiefind
oderstat
.Hier ist ein Beispiel mit GNU
stat
:Hiermit drucken Sie maschinenfreundliche Ausgaben (in knapper Form), sodass Sie genau das erhalten, was Sie benötigen. Verwenden Sie dann
-c
spezifisches Format zu verwenden, oder die Verwendungawk
,cut
oderread
die richtigen Spalten zu erhalten.Prüfen Sie, ob
stat --help
weitere Optionen verfügbar sind. Wenn Sie beispielsweise den Tag der Änderung drucken möchten, aktivieren Sie dieses Beispiel .quelle
for i in ls; do $i
) zu analysieren .