runner grep treat *out>>run-6ren">
gpt4 book ai didi

bash - 在 bash 脚本中运行 vi 并执行 vi 命令来编辑另一个文件

转载 作者:行者123 更新时间:2023-11-29 08:58:41 29 4
gpt4 key购买 nike

所以我制作了一个脚本,它从许多不同的文件中收集数据:

#!/bin/bash

mkdir DATAPOOL"$1"

grep achi *out>runner
grep treat *out>>runner

cat runner | grep Primitive *gout | grep '= '|awk '{print $1,$6}' > CellVolume"$1".txt
cat runner | grep ' c ' *gout | grep 'Angstrom '|awk '{print $1,$3}' > Cellc"$1".txt
cat runner | grep 'Final energy ' *gout |awk '{print $1,$5}' > CellEnergy"$1".txt

等等等等

cat runner |awk '{print "~/xtlanal",$1," > ",$1}' >runner2
vi runner2
:1,$s/gout:/xtl/
:1,$s/gout:/dat/
:wq

source runner2

grep Summary *dat | grep 'CAT-O ' |awk '{print $1,$6}' > AVE_NaO_"$1".txt

mv *txt DATAPOOL"$1"

因此,当我在没有 vi 部分的情况下运行时,我最终得到了所有必需的文本文件,所以我知道它一切正常。此外,当我使用 vi 命令运行它时,它只是在 vi 命令处停止运行,然后我可以手动输入 3 个命令,最终得到正确的结果。我遇到的困难是我无法让 vi 自行运行命令,因此我可以在不同的目录中多次执行该文件,而不必一次又一次地手动输入命令。

如有任何帮助,我们将不胜感激。

干杯

最佳答案

像这样的 bash 脚本:

#!/bin/bash
vi filename.txt -c ':g/^/m0' -c ':wq'

其中 -c 执行命令。这里的命令是反转文本文件中的行。完成后,:wq 保存退出。 (man vi 以获得更多关于 -c 的信息)

如果你不想输入两次-c,你可以这样做:

vi -c "g/^/m0 | wq" filename.txt

关于bash - 在 bash 脚本中运行 vi 并执行 vi 命令来编辑另一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22014830/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com