#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 !
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 ?
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