результаты 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.