找到一个带有字符串的行,并用另一行替换整行

时间:2016-05-22 08:19:20

标签: bash awk sed find

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

2 个答案:

答案 0 :(得分:4)

使用GNU bash和GNU sed:

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

来自man bash

  

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

答案 1 :(得分:1)

您也可以使用find命令找到该文件,并将输出传递给sed命令

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