[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Récupérer le résultat d'une commande sed dans une variable ou un fichier : problème...



----- Mail original ----- 

> De: "roger tarani" <roger.tarani@free.fr>
> À: "Liste Debian" <debian-user-french@lists.debian.org>
> Envoyé: Jeudi 4 Novembre 2021 14:43:01
> Objet: Re: Récupérer le résultat d'une commande sed dans une variable
> ou un fichier : problème...

> Bonjour,

> Il s'agit d'imprimer la ligne, puis d'insérer une copie de la ligne
> en insérant au début de chaque ligne " -> " et la chaîne suivante
> DOMAIN=http://toto.com/

> Chaque ligne contient un nom de fichier

> $ cat mon_fichier

> foo
> bar
> baz
> truc
> machin

> Il s'agit d'obtenir ceci

> $ cat mon_fichier_resultat
> foo
> -> http://toto.com/foo

> bar
> -> http://toto.com/ bar

> baz
> -> http://toto.com/ baz
> truc
> -> http://toto.com/ truc
> machin
> -> h ttp://toto.com/ machin

> D'où la commande sed qui
> va ignorer les lignes commençant par abc ou les lignes vides :
> /^abc\|^$/!
> ... et sur les autres lignes va imprimer le PS/pattern space,
> puis effectuer la substitution convoitée, AVEC un caractère | et non
> avec / comme d'habitude car DOMAIN contient des / et cela ne permet
> pas à la commande sed s/old/new/g de fonctionner )
> { p; s|^| -> '$DOMAIN'|g }
> ou de préférence (même si la précédente sans les guillemets
> fonctionne)
> { p; s|^| -> '"$DOMAIN"'|g }

> Utiliser grep ?
> Je ne cherche pas un mot dans un fichier mais je cherche à ignorer
> les lignes commençant pas abc et les lignes vides, puis à faire le
> traitement décrit (conserver la ligne et insérer la ligne avec une
> substitution)
> Je ne vois pas bien comment faire avec grep ?

> Merci à toi

> Cordialement
> Roger

Bonjour Roger,

En premier tu t'occupes d'éliminer les lignes vides avec Sed ou avec Awk 

awk 'NF' file

documentation :

https://stackoverflow.com/questions/16414410/delete-empty-lines-using-sed
https://unix.stackexchange.com/questions/88721/match-multiple-regular-expressions-from-a-single-file-using-awk

pour l'histoire des premières lettres 'abc' dans la colonne via les 'regex pattern' :

https://documentacoes.wordpress.com/2017/09/13/regex-and-pattern-matching-with-awk/

pour l'histoire de colonne :

https://stackoverflow.com/questions/15361632/delete-a-column-with-awk-or-sed

Ensuite avec Awk il suffira de filtrer la bonne colonne et d'employer Echo et 
de bien convenablement tout ordonner ...

echo -e ' -> http://toto.com/$VAR' >> file-1.txt


Merci de bien vouloir résoudre le premier problème et seulement pas après pas avancer
de telle façon que ce soit clair et compréhensible 

Bien à toi
Bernard


Reply to: