【发布时间】:2021-09-11 09:30:19
【问题描述】:
我目前有以下代码,它打印出名为 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
但是,我希望代码如下所示:
- 获取第 2 行第 4 列和第 7 列中的值
- 为每个可用于计算的值生成两个变量
- 移至第 3 行并更改两个变量的值
我很确定我需要一个带有counter 变量的“for-loop”,它对应于行,但我不知道如何编写它。
【问题讨论】:
-
{ print NR " " $4 " " $7 }和read -r lineno col4 col7会有什么问题? -
如果我必须将变量 $col4 和 $col7 ($col4 + $col7) 中的值添加到哪里?
-
这取决于你想要它的位置。您可以在
bash循环或awk脚本中执行此操作。 -
无论您以后打算做什么,这都不太可能是一个好的起点。特别是“生成我可以进行计算的变量?”听起来您将尝试使用外壳来完成它不适合做的事情,而您应该在读取输入文件的同一个 awk 脚本中进行所需的任何计算。如果您edit您的问题包括简洁、可测试的样本输入和预期输出(即在那些“计算”之后),那么我们可以帮助您以正确的方式做任何事情。