Script Shell : supprimer ligne dans fichier sous unix
JsuisNul
Messages postés
125
Date d'inscription
Statut
Membre
Dernière intervention
-
jee pee Messages postés 41539 Date d'inscription Statut Modérateur Dernière intervention -
jee pee Messages postés 41539 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
J'ai un fichier comme ci-desdsous :
champ1;champ2;champ3;champ4;champ5;champ6;champ7;champ8
A;B;C;D;E;F;G;H
A;B;;;E;F;G;H
A;B;;;;;;;
A;B;C;D;E;;;;
Je souhaite supprimer toute les lignes ou seul les champ1 et champ2 sont renseigné et le reste vide.
( ligne à supprimer A;B;;;;;;; )
J'ai essayer de voir avec un sed mais je ne vois pas comment faire pour mon cas.
Merci pour votre aide.
J'ai un fichier comme ci-desdsous :
champ1;champ2;champ3;champ4;champ5;champ6;champ7;champ8
A;B;C;D;E;F;G;H
A;B;;;E;F;G;H
A;B;;;;;;;
A;B;C;D;E;;;;
Je souhaite supprimer toute les lignes ou seul les champ1 et champ2 sont renseigné et le reste vide.
( ligne à supprimer A;B;;;;;;; )
J'ai essayer de voir avec un sed mais je ne vois pas comment faire pour mon cas.
Merci pour votre aide.
A voir également:
- Script Shell : supprimer ligne dans fichier sous unix
- Classic shell - Télécharger - Personnalisation
- Script vidéo youtube - Guide
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Script cmd - Guide
3 réponses
Bonjour,
Je ne pratique pas tous les jours linux, mais si on regarde : https://forums.commentcamarche.net/forum/affich-37622058-sed-supprimer-une-ou-plusieurs-lignes-d-un-fichier
quelque chose comme :
mais si A et/ou B vide aussi, cela ne fonctionne pas
Je ne pratique pas tous les jours linux, mais si on regarde : https://forums.commentcamarche.net/forum/affich-37622058-sed-supprimer-une-ou-plusieurs-lignes-d-un-fichier
quelque chose comme :
sed '/;;;;;;;$/d' mon_fichier.txt
mais si A et/ou B vide aussi, cela ne fonctionne pas
hello
possible défaut, élimine aussi
autre methode
$ awk -F ";" '{for(n=1; n<=NF; n++)if(length($n))x++; if(x>2)print $0; x=0}' fichier
champ1;champ2;champ3;champ4;champ5;champ6;champ7;champ8
A;B;C;D;E;F;G;H
A;B;;;E;F;G;H
A;B;C;D;E;;;;
possible défaut, élimine aussi
A;;C;;;;;;
autre methode
$ awk -F ";" '$1 && $2 && ($3 || $4 || $5 || $6 || $7 || $8)' fichier
champ1;champ2;champ3;champ4;champ5;champ6;champ7;champ8
A;B;C;D;E;F;G;H
A;B;;;E;F;G;H
A;B;C;D;E;;;;
J'ai lancé une VM linux ;-)
Avec sed et regex :
Avec sed et regex :
sed -E '/^[[:alnum:]]+;[[:alnum:]]+;;;;;;;$/d' fic.txt
linuxlite ~ cat fic.txt A;B;C;D;E;F;G;H A;B;;;E;F;G;H A;B;;;;;;; A;B;C;D;E;;;; A;B;C;D;E;F;G;H A;B;;;E;F;G;H A;B;C;D;E;;;; AAABBB;ZZZCCC;;;;;;; linuxlite ~ sed -E '/^[[:alnum:]]+;[[:alnum:]]+;;;;;;;$/d' fic.txt A;B;C;D;E;F;G;H A;B;;;E;F;G;H A;B;C;D;E;;;; A;B;C;D;E;F;G;H A;B;;;E;F;G;H A;B;C;D;E;;;;
alnumteste les caractères alphanumériques, si les 2 premiers champs peuvent contenir autre chose, on peut utiliser :
sed -E '/^.+;.+;;;;;;;$/d' fic.txt