简体   繁体   English

搜索和用正则表达式替换不适用于sed

[英]Search and replace with regex is not working in sed

I used the following command to replace all dates with another date string in a file using sed. 我使用以下命令使用sed将所有日期替换为文件中的另一个日期字符串。

 time sed -rn 's/\d{4}-\d{2}-\d{2}/2018-03-14/gp' date.txt

date.txt, date.txt,

(245176,1129,'CLEARED',to_date('1996-09-10','YYYY-MM-DD'),35097600,'Y','Y','N',to_date('1996-09-10','YYYY-MM-DD'),'Y',null,1121,null,null,null,null,1435,null,to_date('1996-09-30','YYYY-MM-DD'),null,-1,35097600,null,1117,to_date('1997-03-25','YYYY-MM-DD'),null,null,null,to_date('1997-03-25','YYYY-MM-DD'),-1,-1,to_date('1997-03-25','YYYY-MM-DD'),-1,1117,null,'ARRERGW',null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,204,null,null,null,null,null,null,null,null,null,null,null,null,null); (245176,1129, '清除',TO_DATE( '1996年9月10日', 'YYYY-MM-DD'),35097600, 'Y', 'Y', 'N',TO_DATE('1996年9月10日”, 'YYYY-MM-DD'), 'Y',NULL,1121,NULL,NULL,NULL,NULL,1435,NULL,TO_DATE( '1996年9月30日', 'YYYY-MM-DD'),空,-1,35097600,空,1117,TO_DATE( '1997年3月25日', 'YYYY-MM-DD'),NULL,NULL,NULL,TO_DATE( '1997年3月25日',“YYYY-MM -DD '), - 1,-1,TO_DATE(' 1997年3月25' 日, 'YYYY-MM-DD'), - 1,1117,NULL, 'ARRERGW',NULL,NULL,NULL,NULL,NULL ,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,204,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL ,空值);

Pattern = "\\d{4}-\\d{2}-\\d{2}" Replace String = "2018-03-14" 模式=“ \\ d {4}-\\ d {2}-\\ d {2}”替换字符串=“ 2018-03-14”

But the above command is not working for me.. What did I wrong?? 但是上面的命令对我不起作用。我错了什么?

将数字范围指定为字符类[0-9]

sed -En 's/[0-9]{4}-[0-9]{2}-[0-9]{2}/2018-03-14/gp' date.txt

You can also use ssed (super sed) if you want to use perl regex: 如果要使用perl regex,也可以使用ssed (超级sed):

$ echo '2011-03-02' | ssed -Rn 's/\d{4}-\d{2}-\d{2}/2018-03-14/gp'
2018-03-14

It is less portable but more powerful, so you have to chose as always between flexibility or features/performances. 它的便携性较差,但功能更强大,因此您必须始终在灵活性或功能/性能之间进行选择。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM