cherchant une solution à mon problème, j'ai trouvé ce fil de discussion: Tri sur le dernier champ d'une ligne
J'ai utilisé des solutions de tri en utilisant sed
et awk
et elles fonctionnent, une autre chose dont j'ai besoin est de supprimer toutes les lignes sauf une en fonction de la dernière chaîne d'une ligne.
Exemple, j'ai:
www.site.com/324242_1234 www.site.com/6545_2345 www.site.com/87745_456
Besoin de ce résultat:
www.site.com/324242_1234 www.site.com/233_1234 www.site.com/45357_1234 www.site.com/6545_2345 www.site.com/5433_2345 www.site.com/87745_456 www.site.com/453209_456 www.site.com/1345_456
Je n'ai donc besoin de garder qu'une seule ligne qui contient cette dernière chaîne, dans cet exemple, elles sont séparées par un soulignement. J'apprécie votre aide.
3 Réponses :
$ awk -F_ '!a[$NF]++' file www.site.com/324242_1234 www.site.com/6545_2345 www.site.com/87745_456
veuillez expliquer le script cryptique awk
Que diriez-vous de cela?
cat file | sed -e 's/_/\t/gi' | sort -uk 2,2 | sed -e 's/\t/_/gi'
Où fichier contient les chaînes
awk -F[_/] '{print $NF,$(NF-1),$0}' input_file |sort -r -nk2,1 |awk '!a[$1]++{gsub($1FS$2,"");gsub(/^ /,"");print}' www.site.com/87745_456 www.site.com/6545_2345 www.site.com/45357_1234
Vous obtiendrez un accueil beaucoup plus amical et une bien meilleure aide ici si vous montrez quel code vous avez essayé jusqu'à présent et décrivez les problèmes que vous rencontrez avec lui. Sans code, votre question ressemble à une demande de consultation gratuite et, sur StackOverflow, beaucoup de gens n'aiment pas ça.