Bash 用字符串查找一行,并用另一行替换整行

Bash 用字符串查找一行,并用另一行替换整行,bash,awk,sed,find,Bash,Awk,Sed,Find,我想在目录中搜索名为file.txt的文件,并将这些文件中的整行替换为字符串aprun,替换为另一行vasprun=“mpirun-np 64 vasp” 如何使用awk、sed或任何其他bash实用程序来实现这一点 使用GNU bash和GNU sed: shopt -s globstar sed -i 's/.*aprun.*/vasprun = "mpirun -np 64 vasp"/' -- **/file.txt 从manbash: globstar: 如果设置,路径名扩展上下

我想在目录中搜索名为file.txt的文件,并将这些文件中的整行替换为字符串
aprun
,替换为另一行
vasprun=“mpirun-np 64 vasp”

如何使用awk、sed或任何其他bash实用程序来实现这一点

使用GNU bash和GNU sed:

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

manbash

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


使用GNU bash和GNU sed:

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

manbash

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


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


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

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

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