Pattern – Quittez la 1ère instance de 1ère colonne et remplacez les autres

Consortingbution :

Process1 |5f|03/29/13 15:32:59 Process1 |6f|03/29/13 17:59:03 Pro cess1 |s7|03/29/13 17:59:05 Pro cess1 |1234|03/29/13 20:33:43 Pro cess1 |L|03/29/13 20:33:54 A Pro cess |45g|03/29/13 20:34:59 A Pro cess |f4|03/29/13 21:10:22 B Pro cess |Es|03/30/13 00:11:25 B Pro cess |23|03/30/13 00:47:20 B Pro cess |E23|03/30/13 01:03:07 

Production attendue :

 Process1 |5f|03/29/13 15:32:59 |6f|03/29/13 17:59:03 Pro cess1|s7|03/29/13 17:59:05 |1234|03/29/13 20:33:43 |L|03/29/13 20:33:54 A Pro cess |45g|03/29/13 20:34:59 |f4|03/29/13 21:10:22 B Pro cess |Es|03/30/13 00:11:25 |23|03/30/13 00:47:20 |E23|03/30/13 01:03:07 

Logique: ne laissez qu’une seule instance de 1ère colonne et remplacez une autre instance par du blanc

J’ai essayé ceci, mais n’a pas fonctionné (en prenant ci-dessous le code en boucle):

 sed -e 's/Process1/ /g' -e 's/ /Process1/1' Input 

(Remplacez Process1 par ‘-‘ puis remplacez 1ère instance de ‘-‘ par Process1 à nouveau.

Comme donné par “cnicutar”, j’ai modifié le awk comme suit:

awk -F “|” ‘{a [$ 1] ++; if (a [$ 1]> 1) $ 1 = “”; imprimer le fichier

Sortie de abv:

 Process1 |5f|03/29/13 15:32:59 6f 03/29/13 17:59:03 Pro cess1 |s7|03/29/13 17:59:05 1234 03/29/13 20:33:43 L 03/29/13 20:33:54 A Process |45g|03/29/13 20:34:59 f4 03/29/13 21:10:22 B Pro cess |Es|03/30/13 00:11:25 23 03/30/13 00:47:20 E23 03/30/13 01:03:07 

Sortie souhaitée (insert |)

 Process1 |5f|03/29/13 15:32:59 |6f|03/29/13 17:59:03 Pro cess1 |s7|03/29/13 17:59:05 |1234|03/29/13 20:33:43 |L|03/29/13 20:33:54 A Process |45g|03/29/13 20:34:59 |f4|03/29/13 21:10:22 B Pro cess |Es|03/30/13 00:11:25 |23 | 03/30/13 00:47:20 |E23| 03/30/13 01:03:07 

Que diriez-vous d’une solution légèrement latérale:

 [cnicutar@ariel ~]$ awk '{a[$1]++; if (a[$1] > 1) $1=""; print;}' file Process1 |5f|03/29/13 15:32:59 |6f|03/29/13 17:59:03 |s7|03/29/13 17:59:05 |1234|03/29/13 20:33:43 |L|03/29/13 20:33:54 AProcess |45g|03/29/13 20:34:59 |f4|03/29/13 21:10:22 BProcess |Es|03/30/13 00:11:25 |23|03/30/13 00:47:20 |E23|03/30/13 01:03:07 

À la lumière de l’édition, vous pourriez vouloir:

 awk -F'|' '{OFS="|"; a[$1]++; if (a[$1] > 1) $1=" "; print;}' file