So ersetzen Sie die N-te Spalte/Feld in einer Komma-separierten string mit sed/awk?

angenommen ich habe einen string

"1,2,3,4"

Nun möchte ich ersetzen, z.B. das 3. Feld von die Zeichenfolge, die durch einige verschiedenen Wert.

"1,2,NEW,4"

Ich es geschafft, tun Sie dies mit dem folgenden Befehl:

echo "1,2,3,4" | awk -F, -v OFS=, '{$3="NEW"; print }'

Nun den index für die Spalte ersetzt werden sollten, werden als variable weitergegeben. Also in diesem Fall

index=3

Wie kann ich diese übergeben zu awk? Da dies nicht funktioniert:

echo "1,2,3,4" | awk -F, -v OFS=, '{$index="NEW"; print }'
echo "1,2,3,4" | awk -F, -v OFS=, '{$($index)="NEW"; print }'
echo "1,2,3,4" | awk -F, -v OFS=, '{\$$index="NEW"; print }'

Vielen Dank für Ihre Hilfe!

InformationsquelleAutor Peter Meier | 2012-03-23
Schreibe einen Kommentar