suponer que tengo una cadenaCómo reemplazar la n-ésima columna/campo en una cadena separada por comas usando sed/awk?
"1,2,3,4"
Ahora quiero reemplazar, por ejemplo, el tercer campo de la cadena por un valor diferente.
"1,2,NEW,4"
me las arreglé para hacerlo con el siguiente comando:
echo "1,2,3,4" | awk -F, -v OFS=, '{$3="NEW"; print }'
Ahora el índice de la columna que se sustituyó debe pasarse como una variable. Entonces en este caso
index=3
¿Cómo puedo pasar esto a awk? Porque esto no funcionará:
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 }'
¡Gracias por su ayuda!
Puede usar '-v var = valor' para definir una variable dentro de awk a través de su línea de comandos y luego usar' $ var'. Por lo tanto, este truco de sustitución de texto no es necesario. – Kaz