count occurrences and substitute with counter


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers count occurrences and substitute with counter
# 1  
Old 02-17-2008
Question count occurrences and substitute with counter

Hi Unix-Experts,

I have a textfile with several occurrences of some string XXX. I'd like to count all the occurrences and number them in reverse order.

E.g. input: XXX bla XXX foo XXX
output: 3 bla 2 foo 1

I tried to achieve this with sed, but failed. Any suggestions?

Thanks in advance!!

Tobias
# 2  
Old 02-17-2008
Code:
awk '{ c = NF-1; for (i=1; i<=NF; i++)
$i = i == NF ? $i : $i (OFS = $1 ? OFS : "") c--
}1' FS="XXX" filename

Use nawk or /usr/xpg4/bin awk on Solaris.
# 3  
Old 02-17-2008
Hi radoulov, thanks for the really quick reply. I just tried your suggestion, but it just gives
input: XXX bla XXX foo XXX
output: 1 bla 1 foo 1
# 4  
Old 02-17-2008
...I guess the problem is that I'm not talking about the XXX being on a single line, but spread over the whole textfile!

Is this also possible with awk? Remember - I dunno the number of occurences of XXX in advance! Smilie
# 5  
Old 02-17-2008
I understand, if the file is not too big:

Code:
awk '{ c = NF-1; for (i=1; i<=NF; i++)
$i = i == NF ? $i : $i (OFS = $1 ? OFS : "") c--
}1' FS="XXX" RS= filename

P.S. Because some Awk distributions cannot handle
large records you can use perl, this is the output from a2p
(I'm quite new to perl, so I still don't want to post my own version Smilie):

Code:
#!/usr/bin/perl
eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
    if $running_under_some_shell;
                        # this emulates #! processing on NIH machines.
                        # (remove #! line above if indigestible)

eval '$'.$1.'$2;' while $ARGV[0] =~ /^([A-Za-z_0-9]+=)(.*)/ && shift;
                        # process any FOO=bar switches

$[ = 1;                 # set array base to 1
$FS = ' ';              # set field separator
$, = ' ';               # set output field separator
$\ = "\n";              # set output record separator

$FS = 'XXX';
$/ = "\n\n";

while (<>) {
    chomp;      # strip record separator
    @Fld = split($FS, $_, -1);
    $c = $#Fld - 1;
    for ($i = 1; $i <= $#Fld; $i++) {
        $Fld[$i] = $i == $#Fld ? $Fld[$i] : $Fld[$i] . ($, = $Fld[1] ? $,

          : '') . $c--;
    }
    print join($,,@Fld);
}


Last edited by radoulov; 02-17-2008 at 01:50 PM..
 
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Count the number of string occurrences to display 0 entries in output

Hello Friends, Can somebody assist an issue I am having? I have a separate file with a list of account ids XXX200B02Y01 XXX200B03Y01 XXX200B05Y01 XXX200B07Y01 XXX200B08Y01 I call the file, and run an egrep against a directory and logfiles AccountID=$(cat... (2 Replies)
Discussion started by: liketheshell
2 Replies

2. Shell Programming and Scripting

Count occurrences in first column

input amex-11 10 abc amex-11 20 bcn amed-12 1 abc I tried something like this. awk '{h++}; END { for(k in h) print k, h }' rm1 output amex-11 1 10 abc amex-11 1 20 bcn amed-12 2 1 abc Note: The second column represents the occurrences. amex-11 is first one and amed-12 is the... (5 Replies)
Discussion started by: quincyjones
5 Replies

3. Shell Programming and Scripting

awk Group By and count string occurrences

Hi Gurus, I'm scratching my head over and over and couldn't find the the right way to compose this AWK properly - PLEASE HELP :confused: Input: c,d,e,CLICK a,b,c,CLICK a,b,c,CONV c,d,e,CLICK a,b,c,CLICK a,b,c,CLICK a,b,c,CONV b,c,d,CLICK c,d,e,CLICK c,d,e,CLICK b,c,d,CONV... (6 Replies)
Discussion started by: Royi
6 Replies

4. Shell Programming and Scripting

How to count occurrences in a specific column

Hi, I need help to count the number of occurrences in $3 of file1.txt. I only know how to count by checking one by one and the code is like this: awk '$3 ~ /aku hanya poyo/ {++c} END {print c}' FS="\t" file1.txt But this is not wise to do as i have hundreds of different occurrences in that... (10 Replies)
Discussion started by: redse171
10 Replies

5. Shell Programming and Scripting

Script to count word occurrences, but exclude some?

I am trying to count the occurrences of ALL words in a file. However, I want to exclude certain words: short words (i.e. <3 chars), and words contained in an blacklist file. There is also a desire to count words that are capitalized (e.g. proper names). I am not 100% sure where the line on... (5 Replies)
Discussion started by: Cronk
5 Replies

6. Shell Programming and Scripting

Count occurrences in awk

Hello, I have an output from GDB with many entries that looks like this 0x00007ffff7dece94 39 in dl-fini.c 0x00007ffff7dece97 39 in dl-fini.c 0x00007ffff7ab356c 50 in exit.c 0x00007ffff7aed9db in _IO_cleanup () at genops.c:1022 115 in dl-fini.c 0x00007ffff7decf7b in _dl_sort_fini (l=0x0,... (6 Replies)
Discussion started by: ikke008
6 Replies

7. Shell Programming and Scripting

Help with Unix and Awk to count number of occurrences

Hi, I have a file (movies.sh), this file contains list of movies such as I want to redirect the movies from movies.sh to file_to_process to allow me process the file with out losing anything. I have tried Movies.sh >> file_to_process But I want to add the row number to the data... (2 Replies)
Discussion started by: INHF
2 Replies

8. Shell Programming and Scripting

Count the number of occurrences of the word

I am a newbie in UNIX shell script and seeking help on this UNIX function. Please give me a hand. Thanks. I have a large file. Named as 'MyFile'. It was tab-delmited. I am told to write a shell function that counts the number of occurrences of the ord “mysring” in the file 'MyFile'. (1 Reply)
Discussion started by: duke0001
1 Replies

9. UNIX for Dummies Questions & Answers

Search and Count Occurrences of Pattern in a File

I need to search and count the occurrences of a pattern in a file. The catch here is it's a pattern and not a word ( not necessarily delimited by spaces). For eg. if ABCD is the pattern I need to search and count, it can come in all flavors like (ABCD, ABCD), XYZ.ABCD=100, XYZ.ABCD>=500,... (6 Replies)
Discussion started by: tektips
6 Replies
Login or Register to Ask a Question