如何使用awk生成可以进行计算的变量



我目前有以下代码,它打印出名为chimefrbcat1.csv的.csv文件第4列第2行和第599行之间的所有值。

#!/bin/bash
awk -F , 'NR >= 2 && NR <= 599 { print NR " " $4 }' chimefrbcat1.csv |
while read -r lineno chimera; do
echo "chimera on line $lineno is $chimera"
done

然而,我希望代码按以下方式工作:

  1. 抓取第2行第4列第7列中的值
  2. 为每个值生成两个变量,我可以用于计算
  3. 移到第3行并更改这两个变量的值

我很确定我需要一个带有counter变量的"for循环",该变量对应于行,但我不确定如何写入。

如果需要添加第4列和第7列,可以在awk脚本中添加:

awk -F , 'NR >= 2 && NR <= 599 { print NR " " $4 " " $7 " " $4+$7 }' chimefrbcat1.csv |
while read -r lineno col4 col7 sum; do
echo "line:$lineno  $col4  +  $col7  =  $sum"
done

或在bash中使用算术扩展:

awk -F , 'NR >= 2 && NR <= 599 { print NR " " $4 " " $7 }' chimefrbcat1.csv |
while read -r lineno col4 col7; do
((sum = col4 + col7))
echo "line:$lineno  $col4  +  $col7  =  $sum"
done

相关内容

  • 没有找到相关文章

最新更新