【问题标题】:Find with AWK and Replace使用 AWK 查找和替换
【发布时间】:2017-05-25 20:43:56
【问题描述】:

我有一个名为 sso_med.txt 的文件

        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');

我想在'502689031',16,current_date,之间引入一个空格

所以我尝试了以下命令

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

但我没有得到我期望的结果

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');

【问题讨论】:

  • 它从 current_date 中删除 'c' 和从数字中删除 '1' 并用空格替换它们

标签: unix awk gsub gawk


【解决方案1】:

awk解决方案:

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

输出:

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) - 用一个尾随空格替换/重新排列每个分隔符(即,

【讨论】:

    【解决方案2】:

    只给后面的参考:

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

    【讨论】:

    • 它引入了一个额外的,
    猜你喜欢
    • 2018-02-06
    • 1970-01-01
    • 2014-07-07
    • 2017-11-11
    • 1970-01-01
    • 2014-12-04
    • 1970-01-01
    • 2020-02-03
    • 2017-02-14
    相关资源
    最近更新 更多