Die übergabe von Variablen in awk von bash
Schreibe ich ein shell-Skript-Datei, in die ich ausdrucken bestimmter Spalten einer Datei. Also ich versuche es mal mit awk. Die Spaltennummern entsprechen den script. Nprop ist eine variable in einer for-Schleife, die änderungen vom 1. - 8.
avg=1+3*$nprop
awk -v a=$avg '{print $a " " $a+1 " " $a+2}' $filename5 >> neig5.dat
Habe ich versucht auch die folgende:
awk -v a=$avg '{print $a " " $(a+1) " " $(a+2) }' $filename5 >> neig5.dat
Diese Ergebnisse beim drucken der ersten drei Spalten die ganze Zeit.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies
$avg
zu1+3*4
, buchstäblich, wenn$prop
4 zum Beispiel. Sie sollten die Auswertung von diesem Ausdruck:Und verwenden Sie die version der
awk
Skript mit Klammer.Diese single
awk
Skript ist eine übersetzung von dem, was Sie wollen:Brauchen Sie nicht zu analysieren, Ihre Datei 8 mal in eine shell-Schleife nur analysieren, es einmal mit
awk
.$filename5
ändert sich bei jeder iteration, aber nicht, dass erscheinen der Fall zu sein.)Verwenden
BEGIN{ }
block zu erstellen, ein paar awk-Variablen:Wenn Sie wollen einfach nur Ihr Ausgangswert (nprop) zum Inkrementieren bei jedem Durchgang der Datei und verarbeiten Sie die Datei 8 mal loswerden, Ihre externe Schleife und nur dazu:
In GNU-awk kann man ersetzen, NR/FNR mit ARGIND.