替換每行中倒數第二個出現的字串

替換每行中倒數第二個出現的字串

我有一個包含以下內容的範例輸出檔:

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 ;

我的目標是替換倒數第二列,在本例中是table;但是,該列不是唯一的,因此不必是table。我想將其替換為datadbs

答案1

特殊NF變數 inawk保存目前行中空格分隔欄位的數量。因此,$(NF-1)將是倒數第二個字段,所以你可以這樣做:

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

相關內容