2010-01-17 10 views
0

Contenu de part3.1.awkproblème en supprimant les fichiers en double en utilisant awk

{ 
current_line=$0 
if (current_line!=prev) 
{ 
    print $1 " -> " " -> " $5 " -> " $8 
} 
prev=$0 
} 

Pour obtenir la liste des processus, i exécuter ce dans le terminal. Je veux obtenir une sortie avec des doublons supprimés et triés aussi.

$ ps -ef | awk -f part3.1.awk | sort

Qu'est-ce que je fais de mal?

+0

Je veux la mettre en œuvre sans utiliser uniq. –

Répondre

2

Vous triez la sortie du script awk, lorsque vous voulez trier l'entrée.

$ps -ef | awk -f part3.1.awk | sort 

devrait être

$ps -ef | sort | awk -f part 3.1.awk 

Mais je dois vous dire que vous n'avez pas besoin awk pour supprimer les doublons. sort -u va le faire pour vous, comme dans

ps -ef | sort -u

+0

désolé .. j'ai écrit faux .. je vais éditer ma question .. Mon objectif principal est d'enlever les doublons ... –

+0

Oui, cela devrait fonctionner. Le problème est que votre script awk repose sur tous les doublons se produisant consécutivement. C'est pourquoi vous devez trier AVANT de passer les valeurs à awk, plutôt qu'après. – danben

+0

Et c'est encore le cas que 'sort -u' vous donnera des valeurs triées sans doublons. – danben

1

essayer d'utiliser

$ ps -ef | sort | uniq 
+0

Comment puis-je le faire sans utiliser uniq ...? ?? –

+0

Ok. je l'ai eu .. je peux utiliser "sort -u" –

+0

sort -u est bien, j'ai tendance à utiliser uniq puisque l'intention est claire même lorsque le lecteur n'a pas vu la commande avant. –

Questions connexes