各行の最後から2番目の文字列を置換します

各行の最後から2番目の文字列を置換します

次の内容の出力ファイルの例があります。

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 ;

私の目的は、最後から2番目の列を置き換えることです。tableただし、その列は一意ではないため、tableこれを次のように置き換えたいdatadbs

答え1

の特殊NF変数は、awk現在の行のスペースで区切られたフィールドの数を保持します。したがって、 は$(NF-1)最後から 2 番目のフィールドになるので、次のように実行できます。

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

関連情報