logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 03-03-2020 12:52:03

galactic
Membre
Inscription : 16-01-2017

[Résolu] Commandes sed dans un pipe

Bonjour,
J'ai un petit fichier texte ftext généré automatiquement toutes les heures. Je dois extraire la 5ème ligne de ce fichier et enlever du texte en début de cette ligne.pour ne garder que l'adresse IP
La cinquième ligne

Last IP Address set 145.48.169.72


Si j'applique les 2 règles sed séparémént avec un fichier intermédiaire, celà fonctionne; mais si j'utilise un pipe j'ai le message :sed: no input files


La commande :

#! /bin/sh

sed -n '5p' ftext | sed -i 's/Last IP Adress set//g'



La 1ère commande fait une extraction dans un fichier, alors que la 2ème fait une modification de fichier : donc sans doute une mauvaise utilisation du pipe.

Ensuite je dois comparer l'adresse IP avec une autre adresse contenue dans un fichier ipadresse et faire un traitement si elles sont différentes.

Dernière modification par galactic (29-03-2020 15:30:37)

Hors ligne

#2 03-03-2020 13:08:08

Cauryl
Invité

Re : [Résolu] Commandes sed dans un pipe

Salut !

C'est normal que ça ne fonctionne pas. Deux raisons:

- il y a une typo dans ton regex (Address)

- sed -i sert uniquement à écrire dans un fichier. Il s'utilise comme ceci

sed -i "préfixe texte/regex" fichier


Si tu veux traiter la sortie standard, il faut utiliser l'option -e. Quitte à rediriger le résultat dans un fichier.

Dernière modification par Cauryl (03-03-2020 13:23:47)

#3 03-03-2020 13:17:43

Cauryl
Invité

Re : [Résolu] Commandes sed dans un pipe

Sinon, j'étais curieux d'en apprendre plus sur sed. J'ai trouvé cette solution :

sed -i "5 s/Last IP Address set //g" ftext

#4 29-03-2020 15:29:51

galactic
Membre
Inscription : 16-01-2017

Re : [Résolu] Commandes sed dans un pipe

Effectivement, c'est plus condensé.

La solution finale ici : Commande système dans un script AWK

Hors ligne

Pied de page des forums