Visit Our UNIX and Linux User Community


Using egrep to output expressions which are not found


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Using egrep to output expressions which are not found
# 1  
Old 02-14-2013
Using egrep to output expressions which are not found

Hi,

Im using the below command to search a file for multiple expressions if the 4th expression doesnt exist the command simply lists what it can find and ignores what it cant. Is there any way to get the command to output an error or a message if it cant find the 4th expression to a file?

Any help will be much appreciated Smilie

Code:
egrep -is 'Schema Area|stock|route_drop|test123' /apps/Main_structure.txt 1>/apps/grep_error.txt

Code:
SunOS sants 5.10 Generic_118822-30 sun4u sparc SUNW,Sun-Fire-V490

# 2  
Old 02-14-2013
You can use an egrep -v on a pipe to remove lines that match and an egrep to save lines that match.
# 3  
Old 02-14-2013
Here is an approach using nawk
Code:
nawk ' BEGIN {
                IGNORECASE=1;
        } /Schema Area/||/stock/||/route_drop/||/test123/ {
                if($0~/test123/)
                        c++;
                print;
        } END {
                if(c==0) 
                        print "Error: 4th expression not found!";
}' /apps/Main_structure.txt

# 4  
Old 02-14-2013
You can also use sed, where you can act on lines that have a pattern '/pattern/{...}' or not '/pattern/!{...}' or test one inside the other.
# 5  
Old 02-14-2013
Code:
if grep -q "Schema Area" file &&
   grep -q stock         file &&
   grep -q route_drop    file && 
   grep -q test123       file
then   
  echo correct
else
  echo incorrect
fi

What does the input file look like?
# 6  
Old 02-14-2013
You can do this in one pass in awk, setting flags for each pattern, discarding input and testing the flags at eof.
# 7  
Old 02-15-2013
sorry I dont have the use of nawk or grep with the -q switch

egrep -v wouldn't get what Im looking for as it wouldnt highlight any errors

sorry I only have limited knowledge of awk and sed so Im not sure how I would use them in this case

What I am looking for is by using grep or egrep or any other command to search though a file for expression1|expression2|expression3 etc... and if it can't find one of the expressions output an error along the lines of "can't find expression1". If it does find the expression in the file then do nothing and output nothing.

Thankyou for all your help so far people Smilie

---------- Post updated at 04:05 AM ---------- Previous update was at 04:01 AM ----------

the input file looks like this and carries on:


Code:
 Area Name: Schema Area
Size: 77823936, Records/Block: 64, Area Number: 6
Area Name: stock
Size: 1024192, Records/Block: 64, Area Number: 100
Area Name: route_drop
Size: 4096768, Records/Block: 256, Area Number: 101


Previous Thread | Next Thread
Test Your Knowledge in Computers #56
Difficulty: Easy
A flip-flop circuit stores 1 bit of data.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Going mad on an egrep command (Reg Expressions)

Dear community, I am trying for several hours now to create an egrep command to grep the number of lines containing a specific text from a text-file but seem to have an error somewhere. The Textfile contains several thousand lines and has the expression "Lastname" in several lines.... (3 Replies)
Discussion started by: Donzo
3 Replies

2. UNIX for Dummies Questions & Answers

Egrep output

If I have an output from egrep that has two elements on separate lines can I concatenate them? so the egrep for examople might be: egrep "filename|type" And the actual output might be: ./file001.doc Type Text Document How do I get the egrep to remove the line feed so the output is: ... (5 Replies)
Discussion started by: TuftyDave
5 Replies

3. Shell Programming and Scripting

egrep output order

The order of egrep output seems to be as they occur in the file. How do I get the order as requested? For e.g. file contents: AAA EEE GGG egrep 'GGG|AAA|EEE' file gives AAA EEE GGG instead of GGG AAA EEE (2 Replies)
Discussion started by: madhavb
2 Replies

4. Shell Programming and Scripting

bash: need to have egrep to return a text string if the search pattern has NOT been found

Hello all, after spending hours of searching the web I decided to create an account here. This is my first post and I hope one of the experts can help. I need to resolve a grep / sed / xargs / awk problem. My input file is just like this: ----------------------------------... (6 Replies)
Discussion started by: bash4ever
6 Replies

5. Homework & Coursework Questions

Regular expressions output is whole line

Hi, I am newbie in shell programming and I need some help. I had some data and I format it in a file like dn: uid=aaaaa, dc=exmple, dc=com cn: bbbb cccc sn: cccc telephoneNumber:+30-6543-123456 I have to extract the information aaaaa , bbbb, cccc and the phone number using awk... (3 Replies)
Discussion started by: pro
3 Replies

6. Shell Programming and Scripting

Output section of file between two expressions multiple times

Attached is the exact ouput of a vmware VDR log file I am working with but what I am trying to achieve is as follows: I need to output sections of the file using the string "Normal backup" as the start and "Duration" as the end to seperate files so I can then manipulate them further to create... (2 Replies)
Discussion started by: jelloir
2 Replies

7. Shell Programming and Scripting

egrep output each file in new line

I have the following script that searches in several files and shows the search results and the matches filename on the screen. find . -exec egrep -wH "word1|word2" {} \; the output from the search display as: file1 word1 word2 I need to show each file search output result on new... (5 Replies)
Discussion started by: konddor
5 Replies

8. Shell Programming and Scripting

How to grep/awk/egrep two values for given output?

Dear Friends, I have a command which can result following output. Packet is: /var/adm/yyyy/pkt6043 Intended for network : /vob/repo I would like to retrive pkt6043 and /vob/repo using single command. Blue color test will be always contstant and red color text will be dynamic ... (2 Replies)
Discussion started by: baluchen
2 Replies

9. Shell Programming and Scripting

test egrep not found

Hi, I want to return failure from my script if a string is NOT found in a file, but I can't work out how to negate my "if". At the moment I have : if (egrep -i 'search string' filetosearch); then echo "found" else return 2 fi How can I get rid of the echo bit and just test for "string... (4 Replies)
Discussion started by: cdines
4 Replies

10. Shell Programming and Scripting

Comma Delimited Output w/ egrep

Hi all, I have an input file that I am pulling out certain phases using the following commands: cat /nodes.txt | egrep -e 'OSVersion|PrimaryNodeName' Currently the output looks like this: OSVersion - 5.0 PrimaryNodeName - serverA OSVersion - 5.0 PrimaryNodeName - serverB OSVersion... (2 Replies)
Discussion started by: indianadoug
2 Replies

Featured Tech Videos