Substitua a segunda a última ocorrência de string em cada linha

1

Eu tenho um arquivo de saída de exemplo com o seguinte conteúdo:

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 ;

Meu objetivo é substituir a penúltima coluna, que neste caso é table ; no entanto, essa coluna não é exclusiva, por isso não precisa ser table . Eu gostaria de substituir isso por datadbs

    
por Christopher Karsten 11.04.2017 / 14:11

1 resposta

2

A variável especial NF em awk contém o número de campos delimitados por espaço na linha atual. Portanto, $(NF-1) será o campo penúltimo, então você pode fazer:

awk 'NF>1 && $(NF-1) = "datadbs"' file
    
por 11.04.2017 / 15:02