how to add the number of row and count number of rows


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting how to add the number of row and count number of rows
# 1  
Old 07-14-2010
how to add the number of row and count number of rows

Hi experts a have a very large file and I need to add two columns: the first one numbering the incidence of records and the another with the total count

The input file:
Code:
 21 2341 A 
 21 2341 A 
 21 2341 A
 21 2341 C
 21 2341 C
 21 2341 C
 21 2341 C
 21 4567 A 
 21 4567 A 
 21 4567 C
 21 4567 C
 23 4567 A 
 23 4567 A 
 23 4567 A 
 23 4567 A 
 23 4567 C
 23 4567 C
 23 4567 C

desired output file:

Code:
 21 2341 A 1 3
 21 2341 A 2 3
 21 2341 A 3 3
 21 2341 C 1 4
 21 2341 C 2 4
 21 2341 C 3 4
 21 2341 C 4 4
 21 4567 A 1 2
 21 4567 A 2 2
 21 4567 C 1 2
 21 4567 C 2 2
 23 4567 A 1 4
 23 4567 A 2 4
 23 4567 A 3 4
 23 4567 A 4 4
 23 4567 C 1 3
 23 4567 C 2 3
 23 4567 C 3 3



thanks in advance

Last edited by radoulov; 07-15-2010 at 09:45 AM.. Reason: Code tags, please!
# 2  
Old 07-14-2010
Here's one way to do it with Perl -

Code:
$
$
$ cat f3
21 2341 A
21 2341 A
21 2341 A
21 2341 C
21 2341 C
21 2341 C
21 2341 C
21 4567 A
21 4567 A
21 4567 C
21 4567 C
23 4567 A
23 4567 A
23 4567 A
23 4567 A
23 4567 C
23 4567 C
23 4567 C
$
$
$
$ perl -ne 'chomp; s/\s*$//; s/\s+/:/g; $fmt="%s %s %s %d %d\n";
          if (! defined $x{$_} && $.>1) {
            while (($k,$n) = each(%x)) {
              foreach $i (1..$n) {printf($fmt, split(/:/,$k), $i, $n)}
            }
            %x = (); $x{$_}++;
          } else {$x{$_}++}
          END {
            while (($k,$n) = each(%x)) {
              foreach $i (1..$n) {printf($fmt, split(/:/,$k), $i, $n)}
            }
          }' f3
21 2341 A 1 3
21 2341 A 2 3
21 2341 A 3 3
21 2341 C 1 4
21 2341 C 2 4
21 2341 C 3 4
21 2341 C 4 4
21 4567 A 1 2
21 4567 A 2 2
21 4567 C 1 2
21 4567 C 2 2
23 4567 A 1 4
23 4567 A 2 4
23 4567 A 3 4
23 4567 A 4 4
23 4567 C 1 3
23 4567 C 2 3
23 4567 C 3 3
$
$

tyler_durden
# 3  
Old 07-14-2010
try this:
Code:
awk ' { ++a[$0] } END { for(s in a) { for(i=1;i<=a[s];++i) { print s, i, a[s] } } }  ' inputfile

Note: your input data is assumed to be sorted.
This User Gave Thanks to kevintse For This Post:
# 4  
Old 07-14-2010
Try...
Code:
gawk '{sub(/ $/,"");c=++b[$0];a[NR]=$0 FS c;d[NR]=$0;e[$0]=c}END{for(i=1;i<=NR;i++)print a[i] FS e[d[i]]}' file1

# 5  
Old 07-15-2010
perl

Code:
while(<DATA>){
	chomp;
	$hash{$_}->{CNT}++;
	$hash{$_}->{SEQ}=$.;
}
foreach my $key(sort {$hash{$a}<=>$hash{$b}} keys %hash){
	print $key," ",$_," ",$hash{$key}->{CNT},"\n" foreach (1..$hash{$key}->{CNT});
}
__DATA__
21 2341 A
21 2341 A
21 2341 A
21 2341 C
21 2341 C
21 2341 C
21 2341 C
21 4567 A
21 4567 A
21 4567 C
21 4567 C
23 4567 A
23 4567 A
23 4567 A
23 4567 A
23 4567 C
23 4567 C
23 4567 C

# 6  
Old 07-15-2010
Code:
awk 'NR==FNR{a[$0]++;next}{b[$0]++;print $0,b[$0],a[$0]}' urfile urfile

# 7  
Old 07-15-2010
Another one:

Code:
awk 'END {
  for (i = 0; ++i <= c;)
    print rec[i], i, c
    }
$0 != p {
  for (i = 0; ++i <= c;)
    print rec[i], i, c
  c = 0    
  }
{ 
  p = $0; rec[++c] = $0
  }' infile

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Reseting row count every given number of rows

I have a file with 48 rows. I am counting 6 rows and adding 6 to that number and repeating the operation, and then output the value in column 1. For the second column, I would like to get sort of a binary output (1s and 2s) every 3rd row. This is what I have: awk '{print ++src +... (1 Reply)
Discussion started by: Xterra
1 Replies

2. UNIX for Dummies Questions & Answers

I want count of number of records to be printed on each row.

we want the count of number of records to be printed on each row. For Ex: if there are 5 records on one unique id , the count "5'' should be printed on each record in other column. Please help for this. I am using unix & Cygwin. Below are sample records: KCZ0650473... (2 Replies)
Discussion started by: ElijaRajesh
2 Replies

3. UNIX for Dummies Questions & Answers

Script to count number of rows

Hi, I need a solaris shell script to read multiple files and count number of unique name rows(strings) from those files. The input and output should be like this Input: file 1 abc cde abc ... (9 Replies)
Discussion started by: ssk250
9 Replies

4. Shell Programming and Scripting

Awk/sed script for transposing any number of rows with header row

Greetings! I have been trying to find out a way to take a CSV file with a large number of rows, and a very large number of columns (in the thousands) and convert the rows to a single column of data, where the first row is a header representing the attribute name and the subsequent series of... (3 Replies)
Discussion started by: tntelle
3 Replies

5. Shell Programming and Scripting

Extract and count number of Duplicate rows

Hi All, I need to extract duplicate rows from a file and write these bad records into another file. And need to have a count of these bad records. i have a command awk ' {s++} END { for(i in s) { if(s>1) { print i } } }' ${TMP_DUPE_RECS}>>${TMP_BAD_DATA_DUPE_RECS}... (5 Replies)
Discussion started by: Arun Mishra
5 Replies

6. Shell Programming and Scripting

Count the number or row with same value in a column

This is the source file, we called it errorlist.out 196 server_a server_unix_2 CD 196 server_b server_win_1 CD 196 server_c server_win_2 CD 196 server_bd server_unix_2 CD 196 server_d server_unix_2 CD 196 server_es server_win_1 CD 196 ... (14 Replies)
Discussion started by: sQew
14 Replies

7. UNIX for Dummies Questions & Answers

count number of rows based on other column values

Could anybody help with this? I have input below ..... david,39 david,39 emelie,40 clarissa,22 bob,42 bob,42 tim,32 bob,39 david,38 emelie,47 what i want to do is count how many names there are with different ages, so output would be like this .... david,2 emelie,2 clarissa,1... (3 Replies)
Discussion started by: itsme999
3 Replies

8. UNIX for Dummies Questions & Answers

how to count number of rows and sum of column using awk

Hi All, I have the following input which i want to process using AWK. Rows,NC,amount 1,1202,0.192387 2,1201,0.111111 3,1201,0.123456 i want the following output count of rows = 3 ,sum of amount = 0.426954 Many thanks (2 Replies)
Discussion started by: pistachio
2 Replies

9. Shell Programming and Scripting

count number of nonempty columns in row

Hi, Suppose i have a inputfile in csv format. How to use awk to count 'the number of nonempty columns in each row' minus one, and add the value as a new column in the end For cosmetic reason, it's even better to include a descriptive label for the last column in the first row. for... (2 Replies)
Discussion started by: grossgermany
2 Replies

10. UNIX for Dummies Questions & Answers

row count but only number part

hi i am pretty new to unix .i am ETL guy I need a unix script to take row count of a file and write it to another file the problem with wc-l is it include filename also wc -l abc.dat will give me like 1000 abc.dat i just want 1000 to be written can u just take 2 min to write a simple... (1 Reply)
Discussion started by: er_zeeshan05
1 Replies
Login or Register to Ask a Question