gpt4 book ai didi

linux - 读取具有多个字段的csv文件

转载 作者:太空宇宙 更新时间:2023-11-04 05:44:10 25 4
gpt4 key购买 nike

我想使用 bash 脚本读取 .csv 文件。该文件只有1行数据,但有很多字段。每个字段由分号 ; 分隔。例如:

1;3;2;1;4;2;4;5;3;2;5;2;7;3;9;14;5

这里的问题是,如果我想使用相同的 bash 脚本来读取具有相同格式但具有不同字段数量的另一个文件该怎么办。例如:

1;3;2;1;4;2;4;5;3;2;5;2;7;3;9;14;5;12;3;2;15;4;10;2;5

最有效的方法是什么?

最佳答案

如果您的 bash 非常新,您可以使用 bash 数组,如下所示

IFS=';' read -a array < file.csv

# Print entire array
echo ${array[@]}
1 3 2 1 4 2 4 5 3 2 5 2 7 3 9 14 5

# Print 7th element of array
echo ${array[7]}
5

或者,您可以通过将分号转换为换行符来将字段转置为行。这样,您想要的字段将是行号。

tr ';' '\n' < file.csv
1
3
2
1
4
2
4
5
3
2
5
2
7
3
9
14
5

所以,现在你可以这样做:

#!/bin/bash
field=1
while read x; do
echo Field $field, value: $x
((field++))
done < <(tr ';' '\n' < file.csv)

输出

Field 1, value: 1
Field 2, value: 3
Field 3, value: 2
Field 4, value: 1
Field 5, value: 4
Field 6, value: 2
Field 7, value: 4
Field 8, value: 5
Field 9, value: 3
Field 10, value: 2
Field 11, value: 5
Field 12, value: 2
Field 13, value: 7
Field 14, value: 3
Field 15, value: 9
Field 16, value: 14
Field 17, value: 5

关于linux - 读取具有多个字段的csv文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29579282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com