Ersetzen Sie das vorletzte Vorkommen der Zeichenfolge in jeder Zeile

Ersetzen Sie das vorletzte Vorkommen der Zeichenfolge in jeder Zeile

Ich habe eine Beispielausgabedatei mit folgendem Inhalt:

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 ;

Mein Ziel ist es, die vorletzte Spalte zu ersetzen, die in diesem Falltable; diese Spalte ist jedoch nicht eindeutig und muss daher nichttable. Ich möchte dies ersetzen durchdatadbs

Antwort1

Die spezielle NFVariable in awkenthält die Anzahl der durch Leerzeichen getrennten Felder in der aktuellen Zeile. Daher $(NF-1)wird dies das vorletzte Feld sein, sodass Sie einfach Folgendes tun können:

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

verwandte Informationen