2017-05-25 2 views
1

j'ai un fichier appelé sso_med.txtTrouvez avec AWK et remplacer

 insert into brs.user_components (user_name, component_id, created_date, created_by, last_updated_date, last_updated_by) values ('502683504',16,current_date, '502264160', current_date, '502264160'); 
     insert into brs.user_components (user_name, component_id, created_date, created_by, last_updated_date, last_updated_by) values ('502689031',15,current_date, '502264160', current_date, '502264160'); 
     insert into brs.user_components (user_name, component_id, created_date, created_by, last_updated_date, last_updated_by) values ('502689031',16,current_date, '502264160', current_date, '502264160'); 
     insert into brs.user_components (user_name, component_id, created_date, created_by, last_updated_date, last_updated_by) values ('212462117', 15, current_date, '502264160', current_date, '502264160'); 
     insert into brs.user_components (user_name, component_id, created_date, created_by, last_updated_date, last_updated_by) values ('212462117', 16, current_date, '502264160', current_date, '502264160'); 

Je veux présenter un espace entre '502689031',16,current_date,

J'ai donc essayé la commande ci-dessous

awk '{gsub(/,[0-9a-zA-Z]/, ", "); print}' sso_med.txt 

Mais je ne suis pas ce que j'attends

insert into brs.user_components (user_name, component_id, created_date, created_by, last_updated_date, last_updated_by) values ('502683504', 6, urrent_date, '502264160', current_date, '502264160'); 
insert into brs.user_components (user_name, component_id, created_date, created_by, last_updated_date, last_updated_by) values ('502689031', 5, urrent_date, '502264160', current_date, '502264160'); 
insert into brs.user_components (user_name, component_id, created_date, created_by, last_updated_date, last_updated_by) values ('502689031', 6, urrent_date, '502264160', current_date, '502264160'); 
+0

Sa découpe le « c » de current_date et « 1 » du nombre et de les remplacer par un espace – sromit

Répondre

2

awk solution:

awk '{ gsub(/, */, ", ", $0) }1' sso_med.txt 

La sortie:

insert into brs.user_components (user_name, component_id, created_date, created_by, last_updated_date, last_updated_by) values ('502683504', 16, current_date, '502264160', current_date, '502264160'); 
insert into brs.user_components (user_name, component_id, created_date, created_by, last_updated_date, last_updated_by) values ('502689031', 15, current_date, '502264160', current_date, '502264160'); 
insert into brs.user_components (user_name, component_id, created_date, created_by, last_updated_date, last_updated_by) values ('502689031', 16, current_date, '502264160', current_date, '502264160'); 

  • gsub(/, */, ", ", $0) - remplacer/réorganiser chaque séparateur (à savoir ,) avec un seul des espaces de fin
0

Il suffit de donner la référence arrière:

awk '{gsub(/,[0-9a-zA-Z]/, " &"); print}' sso_med.txt 
+0

Il a introduit une extra, – sromit

+0

@sromit ok, essayez sans la virgule - voir le update –