97 votes

Comment affecter la sortie d'une commande dans un tableau ?

J'ai besoin d'affecter les résultats d'un grep à un tableau... par exemple

 grep -n "search term" file.txt | sed 's/:.*//'

Cela a résulté en un tas de lignes avec des numéros de ligne dans lesquels le terme de recherche a été trouvé.

 1
3
12
19

Quel est le moyen le plus simple de les affecter à un tableau bash ? Si je les attribue simplement à une variable, ils deviennent une chaîne séparée par des espaces.

11voto

shiplu.mokadd.im Points 28895

Les chaînes séparées par des espaces sont facilement traversables dans bash.

 # save the ouput
output=$(grep -n "search term" file.txt | sed 's/:.*//')

# iterating by for.
for x in $output; do echo $x; done;

# awk
echo $output | awk '{for(i=1;i<=NF;i++) print $i;}'

# convert to an array
ar=($output)
echo ${ar[3]} # echos 4th element

si vous pensez à l'espace dans le nom du fichier, utilisez find . -printf "\"%p\"\n"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X