Lire l'avant dernière ligne puis la dernière ligne d'un fichier
Résolu
thierryR51
Messages postés
144
Statut
Membre
-
thierryR51 Messages postés 144 Statut Membre -
thierryR51 Messages postés 144 Statut Membre -
Bonjour,
Je voudrais lire un message envoyé (par mail) par un script de ma fabrication
L'avant derniere ligne me donne l'origine du message
La derniere est une commande.
Je lis le fichier:
jusque là ça va.
C'est ensuite, pour lire chaque ligne dans ma variable que ça coince:
J'ai essayé sed mais ça ne marche pas:
L'exécution du script bash me donne:
Visiblement ça ne doit pas être la bonne commande.
Merci de votre aide.
Je voudrais lire un message envoyé (par mail) par un script de ma fabrication
L'avant derniere ligne me donne l'origine du message
La derniere est une commande.
Je lis le fichier:
commandes=$(tail -2 $MESSAGE ) ;
jusque là ça va.
C'est ensuite, pour lire chaque ligne dans ma variable que ça coince:
J'ai essayé sed mais ça ne marche pas:
origine=$(sed -n 1p "$commandes" ) ;
L'exécution du script bash me donne:
sed: impossible de lire MaMaison
: Aucun fichier ou dossier de ce type
Visiblement ça ne doit pas être la bonne commande.
Merci de votre aide.
A voir également:
- Afficher avant derniere ligne fichier linux
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
3 réponses
salut,
également en bash,
également en bash,
fichier=TonFichier
{ read origine; read commande;} < <(sed -e '$!{h;d;}' -e '$H;x' $fichier)
echo "$origine"
echo "$commande"
Salut,
Ou dans un tableau ;-)
Ou dans un tableau ;-)
$ cat fich
Bonjour,
Je voudrais lire un message envoyé (par mail) par un script de ma fabrication
L'avant derniere ligne me donne l'origine du message
La derniere est une commande.
$ mapfile -O 1 -t tab fich
$ echo ${tab[1]}
L'avant derniere ligne me donne l'origine du message
$ echo ${tab[2]}
La derniere est une commande.
hmm, il y a un problème dans ta commande.
tu as peut-être fait d'autres essais qui auront conservés la trace d'un tableau précédent, parce que telle quelle la commande ne peut pas fonctionner.
tu as peut-être fait d'autres essais qui auront conservés la trace d'un tableau précédent, parce que telle quelle la commande ne peut pas fonctionner.
$ mapfile -t tab <"$fichier"
$ echo "${tab[-2]}"
L'avant derniere ligne me donne l'origine du message
$ echo "${tab[-1]}"
La derniere est une commande.
C'est super zipe31. Ça fonctionne à merveille. Je ne comprends pas tous ces <<< mais ça marche.
Je ne comprends pas tous ces <<< mais ça marche.
man bash (Redirection)
Here Strings
A variant of here documents, the format is:
<<<word
The word undergoes brace expansion, tilde expansion, parameter and
variable expansion, command substitution, arithmetic expansion, and
quote removal. Pathname expansion and word splitting are not per‐
formed. The result is supplied as a single string to the command on
its standard input.