搜索并用正则表达式替换在 sed 中不起作用
Search and replace with regex is not working in sed
我使用以下命令使用 sed 将文件中的所有日期替换为另一个日期字符串。
time sed -rn 's/\d{4}-\d{2}-\d{2}/2018-03-14/gp' 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);
模式 = "\d{4}-\d{2}-\d{2}"
替换字符串 = "2018-03-14"
但是上面的命令对我不起作用..我错了什么??
将数字范围指定为字符class [0-9]
:
sed -En 's/[0-9]{4}-[0-9]{2}-[0-9]{2}/2018-03-14/gp' date.txt
如果你想使用 perl
正则表达式,你也可以使用 ssed
(super sed):
$ echo '2011-03-02' | ssed -Rn 's/\d{4}-\d{2}-\d{2}/2018-03-14/gp'
2018-03-14
它的便携性较差但功能更强大,因此您必须一如既往地在灵活性或 features/performances 之间做出选择。
我使用以下命令使用 sed 将文件中的所有日期替换为另一个日期字符串。
time sed -rn 's/\d{4}-\d{2}-\d{2}/2018-03-14/gp' 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);
模式 = "\d{4}-\d{2}-\d{2}" 替换字符串 = "2018-03-14"
但是上面的命令对我不起作用..我错了什么??
将数字范围指定为字符class [0-9]
:
sed -En 's/[0-9]{4}-[0-9]{2}-[0-9]{2}/2018-03-14/gp' date.txt
如果你想使用 perl
正则表达式,你也可以使用 ssed
(super sed):
$ echo '2011-03-02' | ssed -Rn 's/\d{4}-\d{2}-\d{2}/2018-03-14/gp'
2018-03-14
它的便携性较差但功能更强大,因此您必须一如既往地在灵活性或 features/performances 之间做出选择。