Reemplace la penúltima aparición de cadena en cada línea

Reemplace la penúltima aparición de cadena en cada línea

Tengo un archivo de salida de ejemplo con el siguiente contenido:

ent_status_code,time_stamp) using btree  in table ;

user_id,ent_no) using btree  in table ;

agent_code,ent_no) using btree  in table ;

ent_no,change_ind_code) using btree  in table ;

change_ind_code) using btree  in table ;

using btree  in table ;

using btree  in table ;

ent_no) using btree  in table ;

ent_status_code,time_stamp) using btree  in table ;

user_id,ent_no) using btree  in table ;

agent_code,ent_no) using btree  in table ;

ent_no,change_ind_code) using btree  in table ;

change_ind_code) using btree  in table ;

using btree  in table ;

using btree  in table ;

ent_no) using btree  in table ;

using btree  in table ;

using btree  in table ;

ent_no) using btree  in table ;

Mi objetivo es reemplazar la penúltima columna, que en este caso estable; sin embargo, esa columna no es única, por lo que no tiene por qué serlo.table. Me gustaría reemplazar esto condatadbs

Respuesta1

La NFvariable especial awkcontiene el número de campos delimitados por espacios en la línea actual. Por lo tanto, $(NF-1)será el penúltimo campo, por lo que solo puedes hacer:

awk 'NF>1 && $(NF-1) = "datadbs"' file

información relacionada