How to identify the occurence of a pattern between a unique character?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to identify the occurence of a pattern between a unique character?
# 1  
Old 12-09-2009
Hammer & Screwdriver How to identify the occurence of a pattern between a unique character?

hi,

is it possible to find the number of occurences of a pattern between two paranthesis.

for e.g

i have a file as below.

Code:
>>{
>>hi 
>>GoodMorning
>>how are you?
>>}
>>is it good, 
>>tell me yes, if it is good

In the above file, its clear the occurence of word "Good" is thrice.

But i need the output of only the count of occurence that exist between the { }, which is one here.

How could i do this??

Thanks

Last edited by zaxxon; 12-09-2009 at 06:03 AM.. Reason: code tags please
# 2  
Old 12-09-2009
Code:
awk '/{/,/}/ {if (tolower($0) ~ /good/) {z++}} END{print z}' z=0 infile

# 3  
Old 12-09-2009
Quote:
Originally Posted by zaxxon
Code:
awk '/{/,/}/ {if (tolower($0) ~ /good/) {z++}} END{print z}' z=0 infile

Hi,

Im getting this error, when running the command given.
Error msg for rour reference.

awk: There is a regular expression error.
?, *, or + not preceded by valid regular expression


Thanks
# 4  
Old 12-09-2009
how about:
Code:
sed -n -e '/{/,/}/ {/good/I p}' file.txt

# 5  
Old 12-09-2009
Code:
#!/bin/bash
read -p "Search pattern: " PAT
while true
L=""
do    
    until [ "$L" = "{" ]
    do 
        read L || exit
    done
    until [ "$L" = "}" ]
    do 
        read L || exit
        if $(echo $L | grep -q $PAT)
        then
        ...............
        fi
    done
done

I think awk could do it easier
# 6  
Old 12-09-2009
Code:
#!/bin/bash
shopt -s nocasematch
while read -r line
do
    case "$line" in
       *{* ) flag=1;count=0;;
       *}* ) flag=0
        echo "count: $count"
       ;;
    esac
    if [ "$flag" -eq 1 ];then
            set -- $line
            for c in $@
            do
                case "$c" in
                    *good* )
                    count=$((count+1))
                esac
            done
    fi
done <"file"

# 7  
Old 12-09-2009
Quote:
Originally Posted by ghostdog74
Code:
#!/bin/bash
shopt -s nocasematch
while read -r line
do
    case "$line" in
       *{* ) flag=1;count=0;;
       *}* ) flag=0
        echo "count: $count"
       ;;
    esac
    if [ "$flag" -eq 1 ];then
            set -- $line
            for c in $@
            do
                case "$c" in
                    *good* )
                    count=$((count+1))
                esac
            done
    fi
done <"file"


Hi,

Thanks for the response,
what i need is
I have a file like this

------------------------------------
{##############
things are making me bad
bad things are good
thanks for your help
##############}
bad things make me worse
wore things are bad
bad is always good
good is not bad
-------------------------------

I need to count bad not in between {}
ie count = 4

It will be very helpful for me
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Extract whole word preceding a specific character pattern with first occurence of the pattern

Hello. Here is a file contents : declare -Ax NEW_FORCE_IGNORE_ARRAY=(="§" ="§" ="§" ="§" ="§" .................. ="§"Here is a pattern =I want to extract 'NEW_FORCE_IGNORE_ARRAY' which is the whole word before the first occurrence of pattern '=' Is there a better solution than mine :... (3 Replies)
Discussion started by: jcdole
3 Replies

2. UNIX for Beginners Questions & Answers

Awk: count unique elements in a field and sum their occurence across the entire file

Hi, Sure it's an easy one, but it drives me insane. input ("|" separated): 1|A,B,C,A 2|A,D,D 3|A,B,B I would like to count the occurence of each capital letters in $2 across the entire file, knowing that duplicates in each record count as 1. I am trying to get this output... (5 Replies)
Discussion started by: beca123456
5 Replies

3. Shell Programming and Scripting

How to identify varying unique fields values from a text file in UNIX?

Hi, I have a huge unsorted text file. We wanted to identify the unique field values in a line and consider those fields as a primary key for a table in upstream system. Basically, the process or script should fetch the values from each line that are unique compared to the rest of the lines in... (13 Replies)
Discussion started by: manikandan23
13 Replies

4. Shell Programming and Scripting

Regex to identify unique words in a dictionary database

Hello, I have a dictionary which I am building for the Open Source Community. The data structure is as under HEADWORD=PARTOFSPEECH=ENGLISH MEANING as shown in the example below अ=m=Prefix signifying negation. अँहँ=ind=Interjection expressing disapprobation. अं=int=An interjection... (2 Replies)
Discussion started by: gimley
2 Replies

5. Shell Programming and Scripting

Identify file pattern, take count of pattern, then act

Guys - Need your ideas on a section of code to finish something up. To make a long story short, I'm parsing a print output file that goes to pre-printed forms. I'm intercepting it, parsing it, formatting it, cutting it up into individual pages, grabbing the text I want in zones, building an... (3 Replies)
Discussion started by: ampsys
3 Replies

6. UNIX for Dummies Questions & Answers

How to search unique occurence in a file?

Hi, I have to search and count unique occurence of DE numbers in bold below in a file which has content like below. Proc Tran F-BUY Item Tkey Q5JV Item Tsid JTIZ9 Item Tdat 20091001 Item Tset 20091001 Item Tbkr 5 Item Tshs 2 Item Tprc 897.0 Item Tcom 2000.0 Item Tcm1 20091001... (6 Replies)
Discussion started by: akash028
6 Replies

7. UNIX for Dummies Questions & Answers

How to count the occurence of a character in a line

Suppose i have data like :- 1,2,3,4,5 a,b,c x,y,z,t I want to count the occurence of , (comma) in every line. Waiting for a solution. (5 Replies)
Discussion started by: sumit207
5 Replies

8. UNIX for Advanced & Expert Users

How to count the occurence of a character in a line

Suppose i have data like :- 1,2,3,4,5 a,b,c x,y,z,t I want to count the occurence of , (comma) in every line. Waiting for a solution.:) (1 Reply)
Discussion started by: sumit207
1 Replies

9. UNIX for Dummies Questions & Answers

Counting occurence of a particular character on each line

Hi, I have the following data in a flat file: abcd_efgh_ijkl_20080522.dat|20080602222508|1357 abcd_efgh_ijkl_20080522.dat|20080602222508|1357 abcd_efgh_ijkl_20080522.dat|20080602222508|1357 I need to check the no. of occurence of "|" (pipe) on each line and the output should look like below:... (4 Replies)
Discussion started by: hey_mak
4 Replies

10. Shell Programming and Scripting

First occurence of character in a file

Hi All I have the following contents in a file say in a file name called 'FILE1' *********** Start of the file ************** SANDIO000456GROJ8900 SANDIO2338923GRJH900 *********** End of the file ******************* I want to cut the first line which has the characters.... (6 Replies)
Discussion started by: dhanamurthy
6 Replies
Login or Register to Ask a Question