Щоб призначити вивід команди масиву, потрібно використовувати заміну команди всередині присвоєння масиву. Для загальної команди commandце виглядає так:
arr=( $(command) )
У прикладі OP це звучало б так:
arr=($(grep -n "search term" file.txt | sed 's/:.*//'))
Внутрішній $()запускає команду, тоді як зовнішній ()викликає вихід як масив. Проблема цього полягає в тому, що він не буде працювати, коли вихідні дані команди містять пробіли. Щоб вирішити це, ви можете встановити IFSна \n.
IFS=$'\n'
arr=($(grep -n "search term" file.txt | sed 's/:.*//'))
unset IFS
Ви також можете вирішити потребу в sed, виконавши розширення кожного елемента масиву:
arr=($(grep -n "search term" file.txt))
arr=("${arr[@]%%:*}")