web-dev-qa-db-fra.com

Extraire le contenu du fichier dans un tableau à l'aide de Bash

Comment extraire un contenu de fichier dans un tableau dans Bash ligne par ligne. Chaque ligne est définie sur un élément.

J'ai essayé ça:

declare -a array=(`cat "file name"`)

mais cela n'a pas fonctionné, il extrait toutes les lignes en [0] élément d'index

19
JafarAlali92

Vous pouvez utiliser une boucle pour lire chaque ligne de votre fichier et la placer dans le tableau

# Read the file in parameter and fill the array named "array"
getArray() {
    array=() # Create array
    while IFS= read -r line # Read a line
    do
        array+=("$line") # Append line to the array
    done < "$1"
}

getArray "file.txt"

Comment utiliser votre tableau:

# Print the file (print each element of the array)
getArray "file.txt"
for e in "${array[@]}"
do
    echo "$e"
done
23
Junior Dussouillez

Pour la version bash 4, vous pouvez utiliser:

readarray -t array < file.txt
29
Håkon Hægland

Cela pourrait fonctionner pour vous (Bash):

OIFS="$IFS"; IFS=$'\n'; array=($(<file)); IFS="$OIFS"

Copie $IFS, ensemble $IFS vers la nouvelle ligne, Slurp fichier dans le tableau et réinitialiser $IFS de retour.

2
potong