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

时间:2018-03-14 07:41:29

标签: regex sed replace substitution

我使用以下命令将所有日期替换为使用sed的文件中的另一个日期字符串。

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

date.txt,

  

(245176,1129, '清除',TO_DATE( '1996年9月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年9月30日',“YYYY-MM-DD '),NULL,-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,NULL);

模式=“\ d {4} - \ d {2} - \ d {2}” 替换String =“2018-03-14”

但上面的命令对我不起作用..我错了什么?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

如果你想使用console.log("///test///".replace(/\//gy, "../"));正则表达式,你也可以使用ssed(super sed):

perl

它不太便携但功能更强大,因此您必须始终选择灵活性或功能/性能。