我刚刚从一个老问题中学到了SED如何为单线工作.但现在我正在尝试为多行(php文件缩进)做同样的事情并且它不起作用.应该怎么做?
码:
if ( empty( $donot_dump ) ) {
return false;
Run Code Online (Sandbox Code Playgroud)
替换为:
if ( empty( $donot_dump ) ) {
return true;
Run Code Online (Sandbox Code Playgroud)
文件名:class-prompt.php
由于这是一个大文件,有返回false的TONS; 并返回true; 所以这就是为什么我不能让所有回报都是真实的,反之亦然.
sed '/if ( empty( $donot_dump ) )/ { N; s/false/true/ }' data
Run Code Online (Sandbox Code Playgroud)
/regex/ cmdcmd只有当行匹配时才会执行regex{ cmds } 是一组命令N 命令将文件的下一行附加到模式空间s/regex/replacement/替代regex的replacement换句话说,这会sed检查您所需的if语句.如果找到它,它会在里面执行一组命令{ ... }.第一个命令N将下一行附加到模式空间,第二个命令s替换false为true.
此解决方案适用于GNUsed.如SigmaPiEpsilon的回答中所述,N此处不需要命令,请谨慎使用.我赞成使用它,n因为它为您提供了我认为可能会派上用场的选项.您可以在sed手册或本sed教程中阅读有关此内容的更多信息.
| 归档时间: |
|
| 查看次数: |
172 次 |
| 最近记录: |