我有一个包含许多标签的文件,其形式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 -e
in 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