【问题标题】:Find and replace with AWK command使用 AWK 命令查找和替换
【发布时间】:2017-05-25 19:12:36
【问题描述】:

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

197: insert into brs.user_components (user_name, component_id, created_date, created_by, last_updated_date,last_updated_by) values ('502683504',15,current_date, '502264160', current_date, '502264160'); 
198: 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'); 
199: 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 ('502683504',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 ('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');

我正在尝试 awk 命令

awk '{gsub(/^\d+:\s/,""); print}' sso_med.txt

但它不起作用。知道我在正则表达式中做错了什么

【问题讨论】:

  • \d 无法识别。将其替换为[0-9]

标签: macos unix awk gsub gawk


【解决方案1】:

试试

awk '{gsub(/^[0-9]+: /,"")}1' file

【讨论】:

  • 由于缺乏解释而被否决。请注意与您相比,提问者在表达中的正确/错误之处。
【解决方案2】:

也试试 sed 版本:

sed 's/^[0-9]*: //'  Input_file

将起始数字从 0 替换为 9,然后用 : 替换为 NULL 的空格并打印其余部分。

【讨论】:

    【解决方案3】:

    为避免删除字符串中其他地方的类似模式,请使用sub,它只是替换模式的第一个实例:

    # explanation of regex: "^"=line starts with pattern, "[0-9]+"=multiple numbers, ": "=colon and single space
    awk '{sub(/^[0-9]+: /, "", $0); print $0}'
    

    例子:

    $ echo '197: insert into brs.user_components (user_name, component_id, created_date, created_by, last_updated_date,last_updated_by) values ('502683504',15,current_date, '502264160', current_date, '502264160');' | awk '{sub(/^[0-9]+: /, "", $0); print $0}'
    

    结果:

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

    【讨论】:

      猜你喜欢
      • 2014-02-06
      • 1970-01-01
      • 2018-10-01
      • 2018-02-06
      • 1970-01-01
      • 2014-07-07
      • 2017-11-11
      • 2013-02-09
      • 2014-09-19
      相关资源
      最近更新 更多