각 줄에서 마지막에서 두 번째로 나타나는 문자열을 바꿉니다.

각 줄에서 마지막에서 두 번째로 나타나는 문자열을 바꿉니다.

다음 내용이 포함된 예제 출력 파일이 있습니다.

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의 특수 변수는 awk현재 줄에서 공백으로 구분된 필드의 수를 보유합니다. 따라서 $(NF-1)두 번째 필드가 되므로 다음과 같이 할 수 있습니다.

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

관련 정보