2016-07-17 3 views
0

Я пытаюсь читать строки из .txt и скопировать каждую строку из текста в отдельную папку, которая была ранее созданного с ARRAYчтение построчно из текстового файла и вывода на массив Баш

cat stores/locations.txt |while read -r LINE;do 
echo "$LINE" > county/${ARRAY[${i}]}/localstores.txt 
done 

когда я запускаю это, он создает только 1 файл в округе каталога с одной строкой контактной информации для магазина, но я действительно хочу, чтобы он помещал файл в каждый элемент массива, а не в папку родительских папок.

каждая строка данных включает в себя следующее:

<storeid> <storename> <amountofEmployees> <nameofManager> 

Я супер застрял и действительно был бы признателен за помощь!

+1

если бы мы имели образцы данных, мы не имели бы догадаться, но я думаю, что вы хотите добавить несколько строк в 'графстве/$ {ARRAY [$ {i}]}/localstores.txt'. Для этого вы должны использовать перенаправление '>>'. Удачи. – shellter

+0

Спасибо за быстрый ответ. данные представляют собой строки информации, что-то вроде строки <количество сотрудников><управляющий> ..... поэтому каждая строка должна идти в свою собственную папку – Jack

+0

Спасибо за образцы данных, что помогает некоторые. Попробовали ли вы '>>' для перенаправления append? Удачи. – shellter

ответ

1

Простой способ сделать это будет следующим, что создает новый файл для каждой строки и, необязательно, также добавляет строку в массив.

declare -A myArray() 

while IFS= read -r line # Read a line 
do 
    touch mytargetpath/"$line.txt" # Creates a new file for each of the line in the desired path 
    myArray+=("$line") # Append line to the array 
done < stores/location.txt 

И массив печати содержимого, как: -

# Print the file (print each element of the array) 

for e in "${myArray[@]}" 
do 
    echo "$e" 
done 
Смежные вопросы