результаты bash grep в массив - PullRequest
10 голосов
/ 21 ноября 2011

В bash я пытаюсь собрать результаты grep в массив, каждая ячейка содержит каждую строку.Я загружаю URL-адреса этой строкой

wget -O index -E $ CurrentURL

, а затем я хочу получить результаты из файла индекса (другие URL-адреса).в массив каждой строки на ячейку, какой должен быть правильный синтаксис?

Array = (grep "some expression" index)

??

Ответы [ 2 ]

8 голосов
/ 21 ноября 2011
 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?)'
3 голосов
/ 21 ноября 2011

Вероятно, наиболее изящным из нескольких плохих альтернатив будет использование временного файла.

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...