我有一个包含逗号多个单词的文件。我想读取一个文件并将这些单词存储到数组中。在此文件中,第一行是标题,其他行是基准。但是一些数据是null。因此,这个空字符需要为0例如;
H1;H2;H3;H4
12;23;33;44
44;;7;8
13;;;9
所以我想跳过第一行并将数据放入4 array =>
H1 array= 12;44;13
H2 array= 23;0;0
H3 array= 33;7;0
H4 array= 44;8;9
所以我的代码是这样的:
array=()
awk 'NR>1' $filename2 | while read line
do
cntr=0
IFS=";"
for i in $line; do
if [ -z $i ]; then array[cntr]=0;
else array[cntr]=$i;
fi
cntr=$[$cntr +1]
done
h1array+=("${array[0]}")
h2array+=("${array[1]}")
h3array+=("${array[2]}")
h4array+=("${array[3]}")
done
for ((i=0;i<3;i++)); do
echo "${h1array[$i]}"
done
for ((i=0;i<3;i++)); do
echo "${h2array[$i]}"
done
for ((i=0;i<3;i++)); do
echo "${h3array[$i]}"
done
for ((i=0;i<3;i++)); do
echo "${h4array[$i]}"
done
因此,它在终端中输出null。我怎样才能做到这一点?谢谢
答案 0 :(得分:3)
这就是你想要的吗?
#!/bin/bash
while read -r line; do
[[ "${line}" == *';'* ]] || continue
IFS=';' read -r h1 h2 h3 h4 <<< "${line}"
h1array+=("${h1:-0}")
h2array+=("${h2:-0}")
h3array+=("${h3:-0}")
h4array+=("${h4:-0}")
done < <(tail -n +2 input.txt)
echo "h1array = ${h1array[@]}"
echo "h2array = ${h2array[@]}"
echo "h3array = ${h3array[@]}"
echo "h4array = ${h4array[@]}"
$ ./t.sh
h1array = 12 44 13
h2array = 23 0 0
h3array = 33 7 0
h4array = 44 8 9