Как заменить n-й столбец/поле в строке, разделенной запятыми, используя sed/awk?

предположим, что у меня есть строка

"1,2,3,4"

Теперь я хочу заменить, например. 3-е поле строки другим значением.

"1,2,NEW,4"

Мне удалось сделать это с помощью следующей команды:

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

Теперь индекс заменяемого столбца должен передаваться как переменная. Итак, в этом случае

index=3

Как я могу передать это в awk? Потому что это не сработает:

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 }'

Спасибо за помощь!

7
задан Peter Meier 23 March 2012 в 11:07
поделиться