вывод grep в массив



Ребята, как я могу заставить это работать




'find /xyz / abc / music/ / grep def'




Я не хочу хранить массив в какой-либо временной переменной. Как мы можем непосредственно оперировать этим массивом?



Итак, чтобы получить 1-й элемент этого массива




Echo ${$('find /xyz / abc / music/ / grep def`) [0]}
Пожалуйста, помогите мне, как я могу достичь этого


857   5  

5 ответов:

Если вам просто нужен первый элемент (или, скорее, строка), вы можете использовать head:

`find /xyz/abc/music/ |grep def | head -n 1`

Если вам нужен доступ к произвольным элементам, вы можете сначала сохранить массив, а затем извлечь элемент:

arr=(`find /xyz/abc/music/ |grep def`)
echo ${arr[n]}

Но это не будет помещать каждую строку вывода grep в отдельный элемент массива.

Если вы заботитесь о целых строках вместо слов, вы можете использовать head и tail для этой задачи, например:

`find /xyz/abc/music/ |grep def | head -n line_number | tail -n 1`

Поместите вызов find в скобки массива

X=( $(find /xyz/abc/music/ | grep def) )
echo ${X[1]}
echo ${X[2]}
echo ${X[3]}
echo ${X[4]}

Несмотря на то, что немного поздно, лучшим решением должен быть ответ от Ray, но вам придется перезаписать переменную окружения разделителя полей по умолчанию IFS в newline для принятия полных строк в качестве поля массива. После заполнения массива следует переключить IFS обратно на исходное значение. Я расширю решение лучей:



    # keep original IFS Setting
    IFS_BAK=${IFS}
    # note the line break between the two quotes, do not add any whitespace, 
    # just press enter and close the quotes (escape sequence "\n" for newline won't do)
    IFS="
    "
    X=( $(find /xyz/abc/music/ | grep def) )
    echo ${X[1]}
    echo ${X[2]}
    echo ${X[3]}
    echo ${X[4]}
    # set IFS back to normal..
    IFS=${IFS_BAK}


Надеюсь, это поможет

Это будет работать

array_name=(`find directorypath | grep "string" | awk -F "\n" '{print $1}'`)
echo $array_name

Вы хотите получить первую строку вывода?

find /xyz/abc/music/ |grep def|head 1

Comments

    Ничего не найдено.