-1

У меня есть необходимость хранить файл формы слов в другой переменной. Как у меня есть файл test.txt содержащий содержимое ниже:

uname : null empty amarjeet sharma
ver   : null 1.2 empty 1.3 1.4
txn   : null 123 124 empty 125

Что нужно, это хранить слово перед двоеточием в одной переменной, а оставшиеся в виде массива каждую строку.

Пример: uname сохраняется в var, а ramaining хранится в массиве value[]

var = uname
value[] ={null, empty, amarjeet, sharma}
var1 = ver
value1[] = {null, 1.2, empty, 1.3, 1.4}
etc…

1 ответ1

1

Попробуй это:

declare -A hash  # create associative array
declare -a array # create array

# first part: read file to associative array hash
c=0
while IFS=" :" read hash[$c,0] hash[$c,1]; do
  ((c++))
done < filename

# second part: print hash and array
for ((i=0;i<$c;i++)); do
  # create array from hash with part right from :
  array=(${hash[$i,1]})
  echo "${hash[$i,0]} ->  ${array[@]}"
done

Выход:

uname ->  null empty amarjeet sharma
ver ->  null 1.2 empty 1.3 1.4
txn ->  null 123 124 empty 125

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .