#1 Le 02/10/2023, à 18:25
- zigroful1
awk;sed; ou bash : suppression de lignes sous conditions
Bonjour,
je travaille sous ubuntu 22.04 avec sed awk et bash.
J'ai un fichier csv de la forme:
Dates;item1;item2;item3
01/08/22;a11;a12;a13
01/08/22;a21;a22;a23
01/08/22;a31;a32;a33
02/08/22;a41;a42;a43
03/08/22;a51;a52;a53
04/08/22;a61;a62;a63
05/08/22;a71;a72;a73
05/08/22;a81;a82;a83
05/08/22;a91;a92;a93
31/08/22;a101;a102;a103
05/09/23;a111;a112;a113
07/10/23;a121;a122;a123
12/12/23;a131;a132;a133
31/12/23;a141;a142;a143
31/12/23;a151;a152;a153
31/12/23;a161;a162;a163
je souhaiterai, avec sed awk ou bash, supprimer les lignes de la première occurence de la date 01/08/22 à la dernière occurence de la date 05/08/22.
Avez-vous une idée de la manière de procéder ?
Je ne trouve nulle part, une méthode pour le faire.
Merci d'avance
Hors ligne
#2 Le 02/10/2023, à 18:30
- Watael
Re : awk;sed; ou bash : suppression de lignes sous conditions
salut,
utilise un intervalle.
PS: ce n'est pas toi qui travaille SOUS Ubuntu, c'est ton PC. Toi, tu travailles AVEC ou SUR Ubuntu.
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#3 Le 02/10/2023, à 19:10
- lynn
Re : awk;sed; ou bash : suppression de lignes sous conditions
Bonjour,
sed '/0[1-5]\/08\/22/d' fichier.csv
«C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!»
Coluche
Hors ligne
#4 Le 02/10/2023, à 19:23
- Watael
Re : awk;sed; ou bash : suppression de lignes sous conditions
oui, c'est plus léger.
sed '\@^0[1-5]/08/22@d' fichier.csv
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#5 Le 02/10/2023, à 19:28
- pingouinux
Re : awk;sed; ou bash : suppression de lignes sous conditions
Bonsoir,
Et si tu as des lignes de formats différents entre la première et la dernière à supprimer :
sed -z 's#01/08/22.*05/08/22[^\n]*\n##' fichier.csv
Hors ligne
#6 Le 05/10/2023, à 08:57
- zigroful1
Re : awk;sed; ou bash : suppression de lignes sous conditions
Bonjour,
La remarque de Watael est juste et sa solution fonctionne et je la comprends. La proposition de lynn également.. En revanche celle de pingouinux qui fonctionne me reste incompréhensible. De quels formats différents s'agit-il ? format de date ou de longueurs de lignes ? et comment la formule de pingouinux fonctionne-t-elle ? En tous cas, merci à tous !
Hors ligne
#7 Le 05/10/2023, à 10:48
- pingouinux
Re : awk;sed; ou bash : suppression de lignes sous conditions
De quels formats différents s'agit-il ?
sed -z 's#01/08/22.*05/08/22[^\n]*\n##' fichier.csv
Cette commande va supprimer dans le fichier tout le texte compris (limites incluses) entre 01/08/22 et la fin de la ligne contenant 05/08/22, quel que soit le contenu des lignes intermédiaires.
et comment la formule de pingouinux fonctionne-t-elle ?
Avec l'option -z, sed traite la fin de ligne comme un caractère normal, et c'est le caractère nul (\0) qui est pris comme séparateur de lignes.
Hors ligne
#8 Le 13/10/2023, à 20:37
- DonutMan75
Re : awk;sed; ou bash : suppression de lignes sous conditions
PS: ce n'est pas toi qui travaille SOUS Ubuntu, c'est ton PC. Toi, tu travailles AVEC ou SUR Ubuntu.
Oh tu sais maintenant avec chatGPT, on ne sait plus trop qui parle vraiment
Hors ligne
#9 Le 13/10/2023, à 21:09
- Watael
Re : awk;sed; ou bash : suppression de lignes sous conditions
qui me parle ?
Connected \o/
Welcome to sHell. · eval is evil.
En ligne