arrays - 将数组内容添加到 csv 文件中
问题描述
我搜索了许多试图解决我的问题的网站,但大多数答案都与使用单个数组有关。我正在尝试阅读 2x 文本文件。每个文件都填充了多个 csv 行。我从这两个文件中搜索并选择非常具体的信息。我的目标是编写一个包含我选择的信息的单个 CSV 文件。我已经阅读了 2x 输入文件。我设法获得了我选择的特定数据。我如何捕获数据是使用数组。我有效地读取了每个参数最多 64 倍的值。大约有 20 倍这样的参数。
例如,我使用以下方法来做到这一点:
parameter1[counter]
parameters2[counter] etc
所有 20x 参数值都相互关联,这就是计数器值所确保的。
我需要对这些捕获的值做的是编写一个 csv 文件。每行(最多 64 倍)应包含 20 倍参数。
所以,预期的结果应该是:
para1-1,para2-1,para3-1,para4-1,,,,,
para1-2,para2-2,para3-2,para4-2,,,,,
etc.
这是一些代码来显示我所做的事情:
vall="Value="
write1count=1
recallcount=1
# functions here
read1_function() {
exec 8<$file1
while read -r cap1in <&$FD1
do
if [[ "$maccount" -lt 65 ]]; then
mac_function
fi
if [[ "$antcount" -lt 65 ]]; then
ant_function
fi
if [[ "$namecount" -lt 65 ]]; then
name_function
fi
let count++
done < "$file1"
}
mac_function() {
macvariable="OID=.1000.3.1.6.2.1.12."
if [[ "$cap1in" == *$macvariable* ]]; then
let maccount++
if [[ "$cap1in" == *$macvariable$maccount* ]]; then
macaddress[maccount]=${cap1in#*$vall}
fi
fi
}
ant_function() {
antvariable="OID=.1000.3.1.6.2.1.6."
if [[ "$cap1in" == *$antvariable* ]]; then
let antcount++
if [[ "$cap1in" == *$antvariable$antcount* ]]; then
antconf[antcount]=${cap1in#*$vall}
fi
fi
}
name_function() {
namevariable="OID=.1000.3.1.6.2.1.4."
if [[ "$cap1in" == *$namevariable* ]]; then
let namecount++
if [[ "$cap1in" == *$namevariable$namecount* ]]; then
nameconf[namecount]=${cap1in#*$vall}
fi
fi
}
# step is to create export file containing all customer config
exec 6>$file3 #open file3 to dump new config in
while [ $recallcount -lt 65 ]; do
echo recall $recallcount
if [[ "${macaddress[recallcount]}" == *:* ]]; then
echo $write1count,2,1,${macaddress[recallcount]},${antconf[recallcount]},${nameconf[recallcount]} >>$file3
exec 6>&-
echo "Job completed"
exit
但是,我没有得到想要的结果。
解决方案
根据@Armali .....我从我的代码中包含了一些复制/粘贴。我遗漏了一些部分......现在添加到最后......
一些样本信息:
macaddress[recallcount]=00:12:23:45:67:89
antconf[recallcount]=2
nameconf[recallcount]=customername
.
vall="Value="
write1count=1
recallcount=1
# functions here
read1_function() {
exec 8<$file1
while read -r cap1in <&$FD1
do
if [[ "$maccount" -lt 65 ]]; then
mac_function
fi
if [[ "$antcount" -lt 65 ]]; then
ant_function
fi
if [[ "$namecount" -lt 65 ]]; then
name_function
fi
let count++
done < "$file1"
}
mac_function() {
macvariable="OID=.1000.3.1.6.2.1.12."
if [[ "$cap1in" == *$macvariable* ]]; then
let maccount++
if [[ "$cap1in" == *$macvariable$maccount* ]]; then
macaddress[maccount]=${cap1in#*$vall}
fi
fi
}
ant_function() {
antvariable="OID=.1000.3.1.6.2.1.6."
if [[ "$cap1in" == *$antvariable* ]]; then
let antcount++
if [[ "$cap1in" == *$antvariable$antcount* ]]; then
antconf[antcount]=${cap1in#*$vall}
fi
fi
}
name_function() {
namevariable="OID=.1000.3.1.6.2.1.4."
if [[ "$cap1in" == *$namevariable* ]]; then
let namecount++
if [[ "$cap1in" == *$namevariable$namecount* ]]; then
nameconf[namecount]=${cap1in#*$vall}
fi
fi
}
# step is to create export file containing all customer config
exec 6>$file3 #open file3 to dump new config in
while [ $recallcount -lt 65 ]; do
echo recall $recallcount
if [[ "${macaddress[recallcount]}" == *:* ]]; then
echo $write1count,2,1,"${macaddress[recallcount]}","${antconf[recallcount]}","${nameconf[recallcount]}" >>$file3
echo writecount $write1count
let write1count++
fi
let recallcount++;
done
exec 6>&-
echo "Job completed"
exit
上面的最终结果:
,customername
推荐阅读
- scanf - RHEL8 上的 glibc sscanf 分段错误,相同的代码适用于 RHEL 5、RHEL6 和 RHEL7
- java - 如何将默认值从 JSON 模式添加到 Java 中的 JSON 文档
- swift - 如何将 colectionViewCells 对齐到左侧?
- python - NumPy 中的 arctan2 差异
- android - 在某些 URL 中改造 Okhttp 重复的斜杠
- database - Mongodb模式构建预约系统
- java - 无法使用在 H2 数据库中使用 Flyway 创建的表
- java - jdeps 命令不适用于 -p 属性
- xml - 运算符语法中的 xPath
- animation - 如何动画视图插入/删除的过渡?插入动画不起作用