我想在目录中搜索带有名称file.txt的文件,并将这些文件中的整行替换为由另一行aprun
的字符串vasprun = "mpirun -np 64 vasp"
如何使用awk或sed或任何其他bash实用程序执行此操作?
bash 和 GNU sed:
shopt -s globstar
sed -i 's/.*aprun.*/vasprun = "mpirun -np 64 vasp"/' -- **/file.txt
从man bash
:
globstar
: 如果设置,则路径名扩展上下文中使用的模式 ** 将匹配所有文件以及零个或多个目录和子目录。 如果模式后跟/,则仅目录和子目录 火柴。
您还可以使用 find 命令查找文件,并将输出通过管道传输到 sed 命令
find . -name file.txt | sed -i 's/.*aprun.*/vasprun = "mpirun -np 64 vasp"/g'