【发布时间】:2016-09-19 05:10:48
【问题描述】:
我想在目录中搜索名为 file.txt 的文件,并将这些文件中的整行替换为字符串 aprun 另一行 vasprun = "mpirun -np 64 vasp"
如何使用 awk 或 sed 或任何其他 bash 实用程序执行此操作?
【问题讨论】:
我想在目录中搜索名为 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
来自man bash:
globstar: 如果设置,路径名扩展上下文中使用的模式 ** 将匹配所有文件以及零个或多个目录和子目录。如果模式后跟 /,则只有目录和子目录 匹配。
【讨论】:
您还可以使用 find 命令查找文件并将输出通过管道传输到 sed 命令
find . -name file.txt | sed -i 's/.*aprun.*/vasprun = "mpirun -np 64 vasp"/g'
【讨论】: