Ich habe diese Bash-Anweisung zum Drucken einer bestimmten Zelle aus einer .csv-Datei.Kann ich eine Variable als Parameter für AWKs {print} verwenden?
set `cat $filename | awk -v FS=',' '{print $2}' | head -5 | tail -n 1`
Der '{print $2}'
Teil bestimmt die Spalte und der head -5
Teil bestimmt die Zeile.
Kann ich eine $counter
Variable anstelle von $2
(z. B. '{print $counter}'
) ersetzen?
Ja. Beachten Sie auch, dass Ihre Pipe über 'cat' ein wenig nutzlos ist, da' awk' sowieso einen Dateinamen als Eingabe verwendet. – Bernhard
'head -5' ... muss durch' head -n 5' ersetzt werden –
Wenn Sie 'counter' nicht setzen, wird '$ 0' ausgedruckt (weil' counter' als 0 behandelt wird). Wenn Sie 'counter' auf eine Spaltennummer setzen, wird' print $ counter' die Spaltennummer ausgeben, die durch den aktuellen Wert von 'counter' zum Zeitpunkt der Ausführung des' print' angezeigt wird. Sie können also die Spalte N der Eingabe mit 'N = 5; awk -v N = "$ N" '{print $ N}' '(für N = 5 in diesem Beispiel). –