【问题标题】:find a line with a string and replace entire line with another line用字符串查找一行并将整行替换为另一行
【发布时间】:2016-09-19 05:10:48
【问题描述】:

我想在目录中搜索名为 file.txt 的文件,并将这些文件中的整行替换为字符串 aprun 另一行 vasprun = "mpirun -np 64 vasp" 如何使用 awk 或 sed 或任何其他 bash 实用程序执行此操作?

【问题讨论】:

    标签: bash awk sed find


    【解决方案1】:

    使用 GNU bash 和 GNU sed:

    shopt -s globstar
    sed -i 's/.*aprun.*/vasprun = "mpirun -np 64 vasp"/' -- **/file.txt 
    

    来自man bash

    globstar: 如果设置,路径名扩展上下文中使用的模式 ** 将匹配所有文件以及零个或多个目录和子目录。如果模式后跟 /,则只有目录和子目录 匹配。

    【讨论】:

      【解决方案2】:

      您还可以使用 find 命令查找文件并将输出通过管道传输到 sed 命令

      find . -name file.txt | sed -i 's/.*aprun.*/vasprun = "mpirun -np 64 vasp"/g'

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-08-29
        • 2017-06-16
        • 2018-01-14
        • 2017-04-03
        • 2019-04-18
        • 1970-01-01
        • 2022-08-17
        • 1970-01-01
        相关资源
        最近更新 更多