所以我制作了一个从许多不同文件中收集数据的脚本:
#!/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自己运行命令,所以我可以在不同的目录中多次执行该文件,而不必一次又一次地手动输入命令.
任何帮助将不胜感激.
干杯
对于脚本编辑任务,您可以使用ed而不是vi:
ed runner2 <<'END' 1,$s/gout:/xtl/ 1,$s/gout:/dat/ w q END
sed -i 's/gout:/xtl/; s/gout:/dat/' runner2
原文地址:https://www.jb51.cc/bash/384234.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。