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