쉼표로 여러 단어를 포함하는 파일이 있습니다. 나는 파일을 읽고이 단어들을 배열에 저장하고 싶다. 이 파일에서 첫 번째 줄은 머리글이고 다른 줄은 데이텀입니다. 그러나 일부 데이텀은 null입니다. 따라서이 null 문자는 0이어야합니다. 예를 들면 다음과 같습니다.파일 bash를 읽는 동안 단어를 배열로 저장
H1;H2;H3;H4
12;23;33;44
44;;7;8
13;;;9
그래서 내가 먼저 줄을 건너 뛰려면 4 배열에 자료를 넣어 =>
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'으로 채우는 것입니다. –
예,이 값을 0으로 배열에 추가 – lowcosthighperformance
배열을 만들 필요가 없습니다. bash도 필요 없다. awk의 한 줄에서이 작업을 수행 할 수있다. 당신이 정말로 이루고자하는 것은 무엇입니까 (당신이 해결하려고하는 문제)? –