替换每行中倒数第二个出现的字符串

替换每行中倒数第二个出现的字符串

我有一个包含以下内容的示例输出文件:

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

相关内容