傢伙,我怎樣才能使這項工作grep的輸出到數組
`找到/ XYZ/ABC /音樂/ | grep的def`
我不想存儲在任何陣列臨時變量。我們如何直接在這個數組上運行。
因此要獲得該數組的第1個要素
回聲$ {$('查找/ XYZ/ABC /音樂/ | grep的def`)[0]} 請幫我我怎麼能實現這
傢伙,我怎樣才能使這項工作grep的輸出到數組
`找到/ XYZ/ABC /音樂/ | grep的def`
我不想存儲在任何陣列臨時變量。我們如何直接在這個數組上運行。
因此要獲得該數組的第1個要素
回聲$ {$('查找/ XYZ/ABC /音樂/ | grep的def`)[0]} 請幫我我怎麼能實現這
如果你只需要第一個元素(或者更確切地說線),你可以使用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`
把呼叫數組括號找到
X=($(find /xyz/abc/music/ | grep def))
echo ${X[1]}
echo ${X[2]}
echo ${X[3]}
echo ${X[4]}
這是我的一個。我已經看過很多關於如何將grep結果導入數組的問題,並且我發現「雅緻」這個詞在負面語境中顯示爲一個難以達到的標準......這實際上就是解決方案的示例符合雅緻的定義並完成一行任務。大部分的答案是「沒有一個很好的方法可以做到這一點......」......有很多迂迴的方法......「謝謝! +1 – om01
echo $(om01 thoughts):) –
待辦事項你的意思是獲得輸出的第一行?
find /xyz/abc/music/ |grep def|head 1
即使有點晚了,最好的解決辦法應該是從雷的答案,但你必須覆蓋默認的字段分隔符環境變量IFS爲換行符采取完整的生產線作爲陣列領域。填充陣列後,您應該將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}
希望這有助於
好點,特別是如果你的文件名有空白。但是,設置IFS的更好方法是使用語法IFS = $'\ n'。 –
這將工作
array_name=(`find directorypath | grep "string" | awk -F "\n" '{print $1}'`)
echo $array_name
您需要使用一個變量。 –