文本文件搜索 yyyy/mm/dd 并替换为 yyyy-mm-dd

文本文件搜索 yyyy/mm/dd 并替换为 yyyy-mm-dd

我有一个包含许多标签的文件,其形式yyyy/mm/dd如下行所示,并且希望将其替换/为在一个文件中的所有实例中-给出。yyyy-mm-dd例如

从这个:<tag k='start_date' v='2011/01/01' />
到这个:<tag k='start_date' v='2011-01-01' />

我使用的是 Mac 10.11.6

答案1

你可以用sed

$ sed -E 's|([0-9]{4})/([0-9]{2})/([0-9]{2})|\1-\2-\3|g' file

试一下。

要使用 macOS 或 FreeBSD 就地编辑文件,请添加一个-i ''选项。大多数其他sed实现都需要-i单独实现(-i.back对两者都适用并保存带有.back扩展名的原始版本)。在sed不支持就地编辑的系统上,您可以使用perl -pi -ein place of sed -E(这启发了这些sed -i)。

答案2

抱歉,不,它不起作用。文字没变

但这效果很好...

perl -pi -e 's|([0-9]{4})/([0-9]{2})/([0-9]{2})|\1-\2-\3|g' file

相关内容