我有一个文本文件中的字符串,我想要替换版本号。引号可以从'
到"
变化。同时围绕=
空间可以在那里,可以没有很好:sed正则表达式不能按预期方式工作。不同的管道和文件
$data['MODULEXXX_VERSION'] = "1.0.0";
为了测试我使用
echo "_VERSION'] = \"1.1.1\"" | sed "s/\(_VERSION.*\)[1-9]\.[1-9]\.[1-9]/\11.1.2/"
它完美的作品。
当我改变它在文件中(该文件具有相同的字符串)搜索:
sed "s/\(_VERSION.*\)[1-9]\.[1-9]\.[1-9]/\11.1.2/" -i test.php
,它没有发现任何东西。
与正则表达式的搜索部分打完后,我发现一个更奇怪的事情:
sed "s/\(_VERSION.*\)[1-9]\./\1***/" -i test.php
作品和字符串变为$data['MODULEXXX_VERSION'] = "***0.0";
,但
sed "s/\(_VERSION.*\)[1-9]\.[1-9]/\1***/" -i test.php
不会再发现任何东西。为什么?
我使用的是Ubuntu 17.04桌面。
任何人都可以解释我做错了什么?用字符串$data['MODULEXXX_VERSION'] = "***0.0";
替换文件中版本号的最佳命令是什么?
第二个找不到任何东西,因为'[1-9]'不匹配'0'。使用'[0-9]' – hek2mgl
@ hek2mgl好的catch:D。我也找不到。这是整个问题。 – MichalH