首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使变量$f定义从列号3打印多少"Freq“?

如何使变量$f定义从列号3打印多少"Freq“?
EN

Stack Overflow用户
提问于 2020-09-30 19:18:53
回答 1查看 58关注 0票数 0

我需要你帮我写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

确保我粘贴了脚本的所有内容:

代码语言:javascript
复制
#!/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

样例输入数据文件;以高斯表示的几何图形优化计算

代码语言:javascript
复制
      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.2090
代码语言:javascript
复制
NAtoms=   35 NActive=   35 NUniq=   35 SFac= 1.00D+00 NAtFMM=   60 NAOKFM=F Big=F
EN

回答 1

Stack Overflow用户

发布于 2020-09-30 23:33:53

下面是转换为单个awk脚本的bash脚本:

awk脚本script.awk

代码语言:javascript
复制
/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;
}

运行命令

代码语言:javascript
复制
awk -f script.awk freq.log
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64136469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档