gpt4 book ai didi

arrays - 调用/创建数组时从 csv 指定源行

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

我有一个包含以下数据的 csv:

L'Oreal, Apricot and Peach Conditioner, Sale
Sure, Camomile Deodorant Spray, Standard
Brut, Classic Aftershave, Sale

我已经编写了一些代码来将每个字段变成一个变量,并从字段 2 (f2) 中的每个单词创建一个数组:

#!/bin/bash
input="/home/abbie/Documents/Scripts/test.csv"

#read the csv and creates a variable for each field

while IFS=',' read -r f1 f2 f3 f4

do
#Create an array out of each word in field 2 which is the description field
read -a arr <<<$f2
#print the specified array- the first word is ${arr[0]}
echo ${arr[0]}

done < "$input"

我现在的问题是,因为文件包含多行,我需要一些方法根据创建它的数据行来命名每个数组。在我 echo ${arr[0]} 它打印出每一行的 f2 的第一个单词的那一刻,当我希望能够调用特定的行时。编辑:为了澄清(对不起,我是一个菜鸟,解释得不是很好)我想以某种方式更改我的代码,而不是为整个文件中 f2 中的每个单独的单词创建一个数组,我想创建一个数组对于 f2 中的每个单词逐行显示,并且能够以某种方式显示它来自的 csv 行。

最佳答案

我的回答只是猜测,但也许能帮到你。也许澄清你的问题,这样我就可以更好地回答我的问题。

#!/bin/bash
input="test.csv"

# it prints specyfic argument of array: array guide http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_10_02.html
getLine()
{
local lineNo="$1"
echo "${inputLines[$lineNo]}"
}

# gets specyfic block of line csv's file
getBlock()
{
local lineNo="$1"
local blockNo="$2"

# split string into array by read function
# look at: http://stackoverflow.com/questions/10586153/split-string-into-an-array-in-bash
IFS=',' read -r -a block <<< "$(getLine $lineNo)"
echo "${block[$blockNo]}"
}

getElement()
{
local lineNo="$1"
local blockNo="$2"
local elementNo="$3"

read -r -a element <<< "$(getBlock $lineNo $blockNo)"
echo "${element[$elementNo]}"
}

# read file into an array
# based on nhed response: http://stackoverflow.com/questions/11393817/bash-read-lines-in-file-into-an-array
IFS=$'\r\n' GLOBIGNORE='*' command eval 'inputLines=($(cat $input))'
echo "Loaded ${#inputLines[@]} lines."

getLine 0 # print line of csv
getBlock 0 1 # print block of csv
getElement 0 1 2 # print element of csv

关于arrays - 调用/创建数组时从 csv 指定源行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37142794/

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