Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/03/2014, à 19:34

one_more_time_

comment effacé des lignes dans un fichier apartir d'un autre fichier ?

Bonsoir à tous et toutes.
J’essaie de supprimé des lignes dans un fichier a partir d'un fichier source qui contient des mots. Mais je n'y arrive pas.

Le fichier liste.txt contient les mots qui doivent permettre la suppression dans le fichier de sortie.(3 mots par ligne, je n'utilise que le 3em mot).
Le fichier sortie contient des phrases.
tout semble bien se dérouler mais le fichier de sortie n'est pas modifier ....
voici le bout de code.

while read line; 
do
mot=$(echo $line | cut -d " " -f3,3)  # sélection du mot a supprimer dans le fichier sortie
sed -i  "/echo $mot/d" > sortie.txt    #suppression de la ligne dans le fichier sortie
done < liste.txt

Merci pour votre aide.

Hors ligne

#2 Le 23/03/2014, à 19:48

casperfr

Re : comment effacé des lignes dans un fichier apartir d'un autre fichier ?

Bonjour,

avec > sortie.txt chaque ligne écrase la précédente,
peut etre plutot avec >> sortie.txt

touch sortie.txt
while read line; 
do
mot=$(echo $line | cut -d " " -f3,3)
sed -i  "/echo $mot/d" entree.txt >> sortie.txt
done < liste.txt

Hors ligne

#3 Le 23/03/2014, à 19:57

Watael

Re : comment effacé des lignes dans un fichier apartir d'un autre fichier ?

salut,

en bash:

$ grep -vf <(cut -d ' ' -f3 liste) entree >sortie

et p'is szs'est tout ! wink

Dernière modification par Watael (Le 23/03/2014, à 20:04)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#4 Le 23/03/2014, à 20:13

pingouinux

Re : comment effacé des lignes dans un fichier apartir d'un autre fichier ?

Bonjour,
La solution de Watael #3 est certainement la plus simple et la plus performante.
Celle de one_more_time_ #1 aurait néanmoins pu fonctionner ainsi :

cp entree.txt sortie.txt
while read line;
do
   mot=$(awk '{print $3}' <<<"$line")
   sed -i  "/$mot/d" sortie.txt 
done < liste.txt

Hors ligne

#5 Le 23/03/2014, à 20:54

one_more_time_

Re : comment effacé des lignes dans un fichier apartir d'un autre fichier ?

Merci pour vos reponses.

La solution proposée par casperfr ne semble pas fonctionner : le fichier de sortie est vide.
La solution de Watael me renvois une erreur: Erreur de syntaxe près du symbole inattendu « ( »
La solution de pingouinux fonctionne parfaitement.

Merci encore à tous les trois pour votre aide.

Hors ligne

#6 Le 23/03/2014, à 21:04

pingouinux

Re : comment effacé des lignes dans un fichier apartir d'un autre fichier ?

one_more_time_ #5 a écrit :

La solution de Watael me renvois une erreur: Erreur de syntaxe près du symbole inattendu « ( »

Sa solution fonctionne parfaitement. Tu as dû laisser un espace entre < et (.

Hors ligne