Dado: hay 40 columnas en un registro. Quiero reemplazar la columna 35 para que la columna 35 se reemplace con el contenido de la columna 35 y un símbolo "$". Lo que vino a mi mente es algo como:
awk '{print $1" "$2" "...$35"$ "$36...$40}'
Funciona pero porque no es factible cuando el número de columna es tan grande como 10k. Necesito una mejor manera de hacer esto.
linux
text-processing
awk
replace
Marcus Thornton
fuente
fuente
sed 's/./$&/35'
$
delimitado o no. Lo anterior debe fijar la aparición número 35 de cualquier número de caracteres delimitadores, en otras palabras, el campo número 35, con el carácter$
, sin importar la cantidad de caracteres en cada campo.Para reservar el Field-Seprator original, hice esto. La columna que quería dejar en blanco era el número $ 12.
Con
gawk -i
, si lo tiene, puede editar el archivo en su lugar.fuente
Tenía problemas al usar las respuestas "aprobadas", reemplazaría más que la primera columna del archivo. Yo uso este comando genérico:
Dónde:
[column]
= columna que desea cambiar comenzando con 1 (no 0)[replace]
= texto que desea reemplazarfuente
awk '$1=mktime($1)' FS=, OFS=, oldfile > newfile
... reemplazó un millón de marcas de tiempo en unos segundos !! :)