我有一个awk脚本,可以抓取我想要的数字.但问题是它们是这种格式:1.8200E + 02
在bash脚本中,这个十进制表示法不受支持,所以我想知道任何人都可以帮我解决这个问题.
我在linux环境中工作,我希望得到一些关于bash脚本的帮助,以减少简单的重复.
我有很长的文件名列表(确切地说是937).在一行中的该文件中,只有一个文件名,因此,文件中总共有937行.
我想在文件名前添加某些文本,并按顺序在文件名后面添加数字.
所以我想在文本文件中这样的东西.
aa.exe
bb.exe
cc.exe
Run Code Online (Sandbox Code Playgroud)
至
asd aa.exe 1
asd bb.exe 2
asd cc.exe 3
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.
我有这些线重复
FINAL RESULTS
NSTEP ENERGY RMS GMAX NAME NUMBER
1000 -4.7910E+01 2.1328E-01 9.4193E-01 C 62
Run Code Online (Sandbox Code Playgroud)
最终结果表明一组的平均值.输出文件组合了所有1000组.我需要获取低于能量的数字(-4.7910E + 01),其中所有1000个都在另一个文件中.我需要将最终结果设置为模式,因为其他模式(如NSTEP,ENERGY,RMS ....)将重复数百万次.
我会感激任何帮助.
我的while循环有语法错误,我的代码如下
#! /bin/bash
# extracts pdb from mdcrd and fix number and move to one central location
filename="min_8a-"
i=1
num_structures=1000
natoms=97
folders=15
while [[ $i -le $folders ]]; do
cd ~/new/sa/na-main/a-na-main/second/$i
mkdir pdbfit
x=1
while [[ $x -le $num_structures ]]; do
ptraj ./8a-${a}.prmtop << EOF
trajin $filename$a.mdcrd $x $x 1
trajout pdbfit/a-2-$i.pdb pdb dumpq
EOF
let x=$x+1
done
cd pdbfit
mv *.* ~/pdbfit
cd ..
rm pdbfit
let i=$i+1
done
Run Code Online (Sandbox Code Playgroud)
我得到第34行语法错误,指出"语法错误:意外的文件结束"
作为一个未经训练的眼睛,我尝试但未能解决这个问题,所以如果有人可以帮助我,那么这将是伟大的.