результаты bash grep в массив
в bash я пытаюсь собрать результаты grep в массиве, каждая ячейка содержит каждую строку. Я downloaing URL с этой строки
индекс wget-O-e $CurrentURL
и затем я хочу grep результаты файла "index" (другие URL-адреса) в массив каждой строки на ячейку, каким должен быть правильный синтаксис?
Array=(
grep "some expression" index
)
??
2 ответов
readarray GREPPED < <(grep "some expression" index)
for item in "${GREPPED[@]}"
do
# echo
echo "${item}"
done
О, и объединить эти -v
greps нравится так:
egrep -v '\.(jpg|gif|xml|zip|asp|php|pdf|rar|cgi|html?)'
вероятно, самым элегантным среди нескольких плохих альтернатив было бы использовать временный файл.
wget $blah | grep 'whatever' > $TMPFILE
declare -a arr
declare -i i=0
while read; do
arr[$i]="$REPLY"
((i = i + 1))
done < $TMPFILE
У меня нет времени объяснять, почему, но не трубите непосредственно в чтение.
оболочка Unix не является подходящим инструментом для этой задачи. Perl, Groovy, Java, Python... многие языки могли бы справиться с этим элегантно, но ни одна из оболочек Unix.