grep output into array

梦想的初衷 提交于 2021-02-06 09:01:52

问题


Guys How can I make this work

`find /xyz/abc/music/ |grep def`

I don't want to store the array in any temporary variable. How can we directly operate on this array.

so to get the 1st element of that array

echo ${$(`find /xyz/abc/music/ |grep def`)[0]} Please help me How I can achieve this


回答1:


If you just need the first element (or rather line), you can use head:

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

If you need access to arbitrary elements, you can store the array first, and then retrieve the element:

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

but this will not put each line of grep output into a separate element of an array.

If you care for whole lines instead of words, you can use head and tail for this task, like so:

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



回答2:


Put the call to find in array brackets

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



回答3:


Even though a bit late, the best solution should be the answer from Ray, but you'd have to overwrite the default field separator environment variable IFS to newline for taking complete lines as an array field. After filling your array, you should switch IFS back to the original value. I'll expand Rays solution:



    # 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}


Hope this helps




回答4:


this will work

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



回答5:


Do you mean to get the first line of the output?

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


来源:https://stackoverflow.com/questions/7180082/grep-output-into-array

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!