使用 AWK 从 .CSV 文件中提取数字

使用 AWK 从 .CSV 文件中提取数字

我有一个 .CSV 文件,需要从中提取数字。文件示例:

#File of numbers
1,2,3,4,5
6,7,8,9,10

我想使用 awk (或其他实用程序)提取第一个数字和第二个数字并将它们存储在变量中以在我的 bash 脚本中执行计算。我想排除以 # 开头的第一行。

执行计算后,我想提取第三个数字以继续计算并重复,直到获得所有数字。我不知道如何开始,希望得到一些帮助。我知道我需要将 awk 脚本放入循环中以获得第三、第四等,但我对如何编写 awk 脚本感到困惑。

答案1

在中使用真正的 csv 解析器

#!/bin/bash

csvcut -c 1,2 -d, file.csv |
while IFS=, read -r c1 c2; do
    echo $((c1 * c2)) # do some arithmetic with variables c1 & c2
done

查看csvkit

答案2

通过在 awk 和 shell 之间来回切换来解决此问题的唯一方法是让 AWK 脚本生成下一步的 shell 代码。但这对我来说听起来太复杂了。我还建议将所有内容都转移到 awk 中(或者这里也允许使用 perl 吗?)

答案3

这在bash其他 shell 中非常简单:

while IFS=, read a b c d e ; do
  your_stuff
  done < your_csv_file
  1. IFS 是输入字段分隔符。将命令设置read为仅逗号。

  2. 一次读取五个变量。

  3. 使用全新的 shell 变量 $a $b $c $d $e 完成你的工作。

  4. while您必须在循环末尾、关键字之后定义输入重定向done

相关内容