2017-09-04 99 views
0

我尝试以下,但不添加''这个例子在linux下搜索和替换?

我想更换FILENAME_LOGIN'login.php'

试过这样:

grep -r "login.php" -l | tr '\n' ' ' | xargs sed -i 's/"login.php"/'login.php'/g' 

但是,它给了我login.php'login.php'

谢谢

+0

未经检验的,但试图逃跑的单引号:'xargs的SED -i的/“登录。 PHP的“/ \ '的login.php \'/ g'' - 或双逃生:'xargs的SED -i 'S/”的login.php“/ \\' 的login.php \\'/ g'' –

+0

你可以不要在单引号分隔的脚本中包含单引号,无论您尝试多少次逃离它们。 –

回答

1

你只需要sed此:

sed -i -e "s/FILENAME_LOGIN/'login.php'/g" /your/file 
0

我想通了:

find ./ -type f -exec sed -i -e 's/FILENAME_LOGIN/'login.php'/g' {} \; 
+0

是的,这将搜索任何子目录中的文件,很好! :) – campovski

+0

它不会在文本周围添加单引号。 –

0
find ./ -type f -exec sed -i -e 's/FILENAME_LOGIN/'\''login.php'\''/g' {} \; 
+2

感谢您使用此代码段,它可能会提供一些即时帮助。通过展示*为什么*这是一个很好的解决方案,对未来的读者会有更好的解决方案,这将为它的教育价值提供一个合适的解释[//大大提高](// meta.stackexchange.com/q/114762)但不完全相同的问题。即使像“你忘了引用这些人物”这样简单的东西也是一个很大的改进。 –