【问题标题】:Find Line containing and replace with [closed]查找包含并替换为 [关闭] 的行
【发布时间】:2014-06-17 06:56:09
【问题描述】:

什么是最简单的方法:

在文本文件中查找包含

的行
listen = /var/run/php5-fpm.sock

并用

替换该行
listen = 127.0.0.1:9000

【问题讨论】:

  • 你熟悉sed吗?
  • 您是否尝试过至少一次谷歌搜索?
  • sed -i 's|find|replace|' file
  • 是的,是的。尝试了很多方法来解决这个问题,但是我尝试过的方法都不能在搜索或替换时接受空格。

标签: linux perl bash sed grep


【解决方案1】:
perl -i~ -pe 's|^\s*listen\s*=\s*\K /var/run/php5-fpm\.sock|127.0.0.1:9000|x' file

listen = /var/run/php5-fpm.sock 行与大量空格匹配,但仅替换/var/run/php5-fpm.sock 部分到期\K 正面看后面(与(?<=..) 相同)

【讨论】:

  • 稍微解释一下可能对这个答案有好处。
【解决方案2】:
 sed -i 's|listen = /var/run/php5-fpm.sock|listen = 127.0.0.1:9000|' file

【讨论】:

    【解决方案3】:
    perl -i.bak -p -e 's|/var/run/php5-fpm.sock|127.0.0.1:9000|g;' myfile
    

    【讨论】:

      【解决方案4】:

      试试这个 GNU sed 命令,

      sed -ri 's/.*(listen = ).*/\1127.0.0.1:9000/g' file
      

      更准确,

      sed -ri 's/^(listen = )\/var\/run\/php5-fpm\.soc$/\1127.0.0.1:9000/g' file
      

      【讨论】:

        猜你喜欢
        • 2022-07-17
        • 2014-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-29
        • 2012-06-24
        • 2014-07-26
        • 2013-02-27
        相关资源
        最近更新 更多