Bonjour
Peut-t-on faire une recherche de doublons ou triplons, suivie d'une élimination, avec des expressions régulières?
J'ai des lignes de champs séparés par des espaces out des tabulations. Les champs ne sont pas entre ' ni ". Il peut y avoir d'autres doublons/triplons sur d'autres lignes, mais a priori un seul "groupe" par ligne
Par avance merci
Patrick
Hello,
Si c'est toute la ligne qui rentre en doublon/triplon, alors "sort | uniq" ou le condensé "sort -u" sont tes amis.
Sinon, à voir en fonction de la tête de ton fichier... (d'ailleurs je pense qu'il serait préférable de mettre un exemple pour qu'on puisse tous mieux visualiser de quoi tu parles, quitte à ce que tu remplaces le texte si jamais c'est sensible...).
l0f4r0
Re-bonjour
sort, j'y aurais déjà pensé
net_224 Q1-5 U15-3 R15-2 U15-3 => net_224 Q1-5 U15-3 R15-2
net_224 Q1-5 U15-3 R15-2 U15-3 U15-3 R4-1 => net_224 Q1-5 U15-3 R15-2 R4-1
Le cas ou c'est le nom, à gauche, qui est en doublon n'existera pas.
C'est l'ensemble [A-Z][1,9][0,9]{0,2}-[1-9] qui peut être en doublon, le cas "U15-3 U15-2" n'existera pas.
On peut supprimer n'importe lequel des 2 (3), voire déplacer celui qui reste, du moment qu'il n'ailles pas en première colonne
A+
Patrick
On Tue, 2023-08-08 at 20:26 +0200, l0f4r0@tuta.io wrote:
Hello,
Si c'est toute la ligne qui rentre en doublon/triplon, alors "sort | uniq" ou le condensé "sort -u" sont tes amis.
Sinon, à voir en fonction de la tête de ton fichier... (d'ailleurs je pense qu'il serait préférable de mettre un exemple pour qu'on puisse tous mieux visualiser de quoi tu parles, quitte à ce que tu remplaces le texte si jamais c'est sensible...).
l0f4r0 _______________________________________________ tech mailing list tech@lists.parinux.org https://lists.parinux.org/listinfo/tech
Hello,
Pas besoin de regex.
awk '{ for(i=2;i<=NF;i++) { if($i!="deleted") { for(j=i+1;j<=NF;j++) { if($i==$j) { $j="deleted" } } } }; for(i=1;i<=NF;i++) { if($i!="deleted") { printf "%s ",$i }; if (i==NF) { printf "\n" } } }' input.txt
l0f4r0
Merci.
On oubli trop souvent awk. Peut être parce que ça gère les lignes indépendament, mais c'est ce que je veux
On Thu, 2023-08-10 at 00:07 +0200, l0f4r0@tuta.io wrote:
Hello,
Pas besoin de regex.
awk '{ for(i=2;i<=NF;i++) { if($i!="deleted") { for(j=i+1;j<=NF;j++) { if($i==$j) { $j="deleted" } } } }; for(i=1;i<=NF;i++) { if($i!="deleted") { printf "%s ",$i }; if (i==NF) { printf "\n" } } }' input.txt
l0f4r0 _______________________________________________ tech mailing list tech@lists.parinux.org https://lists.parinux.org/listinfo/tech
J'ai juste eu une surprise: mon logiciel coupe les lignes trop longues avec \ <CR> (et met un espace en première colonne de la ligne suivante). awk m'inserre un espace entre \ et <CR> J'ai rajouté un sed s/\ $/\/g et remplacé ...for{i=2... par ...i=1... Ça fait un peu bidouille. Je ne sais pas ce qu'en pensent les puristes des bonnes pratiques.
On Fri, 2023-08-11 at 10:09 +0200, Patrick Pouget wrote:
Merci.
On oubli trop souvent awk. Peut être parce que ça gère les lignes indépendament, mais c'est ce que je veux
On Thu, 2023-08-10 at 00:07 +0200, l0f4r0@tuta.io wrote:
Hello,
Pas besoin de regex.
awk '{ for(i=2;i<=NF;i++) { if($i!="deleted") { for(j=i+1;j<=NF;j++) { if($i==$j) { $j="deleted" } } } }; for(i=1;i<=NF;i++) { if($i!="deleted") { printf "%s ",$i }; if (i==NF) { printf "\n" } } }' input.txt
l0f4r0 _______________________________________________ tech mailing list tech@lists.parinux.org https://lists.parinux.org/listinfo/tech
tech mailing list tech@lists.parinux.org https://lists.parinux.org/listinfo/tech
Bonjour
Peut-t-on faire une recherche de doublons ou triplons, suivie d'une élimination, avec des expressions régulières?
J'ai des lignes de champs séparés par des espaces out des tabulations. Les champs ne sont pas entre ' ni ". Il peut y avoir d'autres doublons/triplons sur d'autres lignes, mais a priori un seul "groupe" par ligne
Par avance merci
Patrick
On Tue, 2023-08-08 at 20:26 +0200, l0f4r0@tuta.io wrote:
Hello,
Si c'est toute la ligne qui rentre en doublon/triplon, alors "sort | uniq" ou le condensé "sort -u" sont tes amis.
Sinon, à voir en fonction de la tête de ton fichier... (d'ailleurs je pense qu'il serait préférable de mettre un exemple pour qu'on puisse tous mieux visualiser de quoi tu parles, quitte à ce que tu remplaces le texte si jamais c'est sensible...).
l0f4r0 _______________________________________________ tech mailing list tech@lists.parinux.org https://lists.parinux.org/listinfo/tech