Hi Everybody,
I have the following example file...
199|TST-GURGAON|GURGAON|1
199|TST-GURGAON|GURGAON|1
199|TST-GURGAON|GURGAON|1
199|TST-GURGAON|GURGAON|1
199|TST-GURGAON|GURGAON|1
199|TST-GURGAON|GURGAON|1
199|TST-GURGAON|GURGAON|1
199|TST-GURGAON|GURGAON|1
199|TST-GURGAON|GURGAON|1
1|TST - MAIN LAB|DELHI|1
1|TST - MAIN LAB|DELHI|1
1|TST - MAIN LAB|DELHI|1
333|TST-PREET VIHAR|DELHI|1
333|TST-PREET VIHAR|DELHI|1
333|TST-PREET VIHAR|DELHI|1
333|TST-PREET VIHAR|DELHI|1
61B|PARNAMI X-RAY & CLINICAL LAB|DELHI|1
650|PUNJABI BAGH|DELHI|1
650|PUNJABI BAGH|DELHI|1
650|PUNJABI BAGH|DELHI|1
871|GREATER NOIDA C.C|GREATER NOIDA|1
871|GREATER NOIDA C.C|GREATER NOIDA|1
871|GREATER NOIDA C.C|GREATER NOIDA|1
871|GREATER NOIDA C.C|GREATER NOIDA|1
871|GREATER NOIDA C.C|GREATER NOIDA|1
871|GREATER NOIDA C.C|GREATER NOIDA|1
871|GREATER NOIDA C.C|GREATER NOIDA|1
871|GREATER NOIDA C.C|GREATER NOIDA|1
897|NETAJI NAGAR C.C|DELHI|1
VK1|NATIONAL DIAGNOSTICS|PATNA|1
VK1|NATIONAL DIAGNOSTICS|PATNA|1
VK1|NATIONAL DIAGNOSTICS|PATNA|1
VK1|NATIONAL DIAGNOSTICS|PATNA|1
VK1|NATIONAL DIAGNOSTICS|PATNA|1
VK1|NATIONAL DIAGNOSTICS|PATNA|1
VK1|NATIONAL DIAGNOSTICS|PATNA|1
VK1|NATIONAL DIAGNOSTICS|PATNA|1
I am looking for a AWK or PERL solution (A single line code is highly prefered) to produce the following...
199|TST-GURGAON|GURGAON|9
1|TST - MAIN LAB|DELHI|3
333|TST-PREET VIHAR|DELHI|4
61B|PARNAMI X-RAY & CLINICAL LAB|DELHI|1
650|PUNJABI BAGH|DELHI|3
871|GREATER NOIDA C.C|GREATER NOIDA|8
897|NETAJI NAGAR C.C|DELHI|1
VK1|NATIONAL DIAGNOSTICS|PATNA|8
Basically the I am looking to print the total count based on the first field.
Could any body from you may give me a hand please ?
Regards - Sraj142
$ nawk -F"\|" ' { arr[$1]++ } END { for( no in arr) { print no , arr[no] } } ' test
199 9
VK1 8
871 8
61B 1
650 3
897 1
333 4
1 3
taken from the old post..
search here for more answers
Google Search Results for count file awk | The UNIX and Linux Forums
1 Like
Hi itkamaraj,
Big Thanks for your reply. One thing is happening here...
- Field 2 and 3 are not being displayed.
Any hint please ?
Regards.
like this.. ?
its ur responsibility to remove the first pipe symbol and adding the pipe symbol in last before field. modify the code
$ nawk -F"\|" ' { for(i=1;i<NF;i++)str=str"|"$i; arr[str]++; str="" } END { for( no in arr) { print no , arr[no] } } ' test
|650|PUNJABI BAGH|DELHI 3
|333|TST-PREET VIHAR|DELHI 4
|199|TST-GURGAON|GURGAON 9
|VK1|NATIONAL DIAGNOSTICS|PATNA 8
|61B|PARNAMI X-RAY & CLINICAL LAB|DELHI 1
|871|GREATER NOIDA C.C|GREATER NOIDA 8
|1|TST - MAIN LAB|DELHI 3
|897|NETAJI NAGAR C.C|DELHI 1
Yea, Sure. Its a good start. Thanks a lot. In any case, is it not possible with the same code you have posted ?
its possible with the above same code.. need some changes... try it out and let us know
1 Like
Struggling, but no hope yet "itkamaraj'. Please see if you can give me hand.
---------- Post updated at 01:03 PM ---------- Previous update was at 12:43 PM ----------
Hi itkamaraj,
Big many thanks for giving me a good start. I have got with the following code...
nawk -F"\|" ' { for(i=1;i<NF;i++)str=str"|"$i; arr[str]++; str="" } END { for( no in arr) { print no,"|", arr[no] } } ' upload.dat |
awk 'BEGIN {FS="|"} {sep="|"} {print $2 sep $3 sep $4 sep $5}' | sed '1,$s/ | /|/g'
Regards.
nawk -F"\|" ' { for(i=1;i<NF;i++){if(i==1){str=$i} else{str=str"|"$i}} arr[str]++; str="" } END { for( no in arr) { print no"|"arr[no] } } ' upload.dat
awk 'BEGIN{FS=OFS="|"}END{p($0,z)}function p(y,z){print y z}{$NF=_;if(NR-1 && P!=$0){p(P,z);z=0};P=$0;z++}' file
199|TST-GURGAON|GURGAON|9
1|TST - MAIN LAB|DELHI|3
333|TST-PREET VIHAR|DELHI|4
61B|PARNAMI X-RAY & CLINICAL LAB|DELHI|1
650|PUNJABI BAGH|DELHI|3
871|GREATER NOIDA C.C|GREATER NOIDA|8
897|NETAJI NAGAR C.C|DELHI|1
VK1|NATIONAL DIAGNOSTICS|PATNA|8
1 Like