Si j'ai une variable avec plusieurs lignes (texte), comment puis-je en extraire la dernière ligne?
J'ai déjà compris comment obtenir la première ligne:
STRING="This is a
multiple line
variable test"
FIRST_LINE=(${STRING[@]})
echo "$FIRST_LINE"
# output:
"This is a"
Il devrait probablement y avoir un opérateur pour la dernière ligne. Ou du moins je suppose que parce qu'avec @
la première ligne sort.
Utilisation des manipulations de chaînes bash:
$> str="This is a
multiple line
variable test"
$> echo "${str##*$'\n'}"
variable test
${str##*$'\n'}
supprimera la correspondance la plus longue jusqu'à \n
à partir du début de la chaîne ne laissant ainsi que la dernière ligne en entrée.
Un moyen simple de le faire est d'utiliser tail
:
echo "$STRING" | tail -n1
Si vous voulez un tableau avec un élément par ligne de STRING
, utilisez
readarray -t lines <<< "$STRING"
Ensuite, la première ligne serait ${lines[0]}
, et la dernière ligne serait ${lines[-1]}
. Dans les anciennes versions de bash
, les indices négatifs ne sont pas autorisés et vous devrez calculer le dernier index manuellement: ${lines[${#lines[@]}-1]}
.