我需要你帮我写bash脚本。我对代码有问题:
for v in $(seq 1 $f)); do echo $(grep "Freq" freq.log) | awk '{print$3}')
因为这需要打印$f乘以列号3,所以应该打印列号3的"Freq"的$f值。
它看起来像是
enter image description here应该类似于enter image description here
我不知道如何让变量$f定义从第3列打印多少"Freq"。在这个文件中,我有很多"Freq"表达式,但我只需要$f。
确保我粘贴了脚本的所有内容:
#!/bin/bash
e=$(grep "atomic number" freq.log | tail -1 | awk '{print$2}')
echo "Liczba atomow znajdujacyh sie w podanej czasteczce wynosi: $e"
f=$(bc <<< "($e*3-6)/3")
echo "Liczba wartosci Freq, ktore wczyta skrypt to $f"
for v in $(seq 1 $f); do
echo "$(grep "Freq" freq.log | awk '{print$3}')"
done样例输入数据文件;以高斯表示的几何图形优化计算
A A A
Frequencies -- 182.1477 202.8948 227.7144
Red. masses -- 6.6528 8.2622 6.3837
Frc consts -- 0.1300 0.2004 0.1950
IR Inten -- 0.8602 0.4870 1.2090NAtoms= 35 NActive= 35 NUniq= 35 SFac= 1.00D+00 NAtFMM= 60 NAOKFM=F Big=F发布于 2020-09-30 23:33:53
下面是转换为单个awk脚本的bash脚本:
awk脚本script.awk
/atomic number/{ # for each line matching regEx pattern "atomic number"
e = $2; # store current 2nd field in variable e
}
/Freq/{ # for each line matching regEx pattern "Freq"
freqArr[fr++]=$3; # add 3rd field to array freqArr, increment array counter fr
}
END { # on complete scanning input file
print "Liczba atomow znajdujacyh sie w podanej czasteczce wynosi: " e;
f = ( ((e * 3) - 6) / 3 ); # claculate vairable f
print "Liczba wartosci Freq, ktore wczyta skrypt to " f;
for (currFreq in freqArr) { # scan all element freqArr
if (currFreq == f) # if currFreq equals f
freqCount++; # increment freqCount coutner
}
print freqCount;
}运行命令
awk -f script.awk freq.loghttps://stackoverflow.com/questions/64136469
复制相似问题