Grep -v, with -A or -B?


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Grep -v, with -A or -B?
# 1  
Old 10-24-2009
Question Grep -v, with -A or -B?

hello everyone, i'm taking a class on unix and linux, and have come across a problem that my teacher couldn't figure out either:

the testing file i'm using:
Code:
This is a test of grep
to see how inversion really works
and figure out the problem that the class is having
hopefully this works

so here's some things i've tried:
Code:
cat test|grep 'figure'
output:
and figure out the problem that the class is having

cat test|grep -A 1 'figure'
output:
and figure out the problem that the class is having
hopefully this works

and here's the problem:

cat test|grep -v -A 1 'figure'
output:

This is a test of grep
to see how inversion really works
and figure out the problem that the class is having
hopefully this works

so, why does grep behave like that?, i thought that the output would be:
Code:
 This is a test of grep
 to see how inversion really works

instead it acts like it broke, and outputs the entire file, any help is much appreciated
# 2  
Old 10-24-2009
You asked to print one line after the line that doesn't match the word "figure".

So when it finds
Code:

to see how inversion really works

It will print the next line
Code:
and figure out the problem that the class is having

The -A option is applied before the -v option.

If your file was
Code:
and figure out the problem that the class is having
hopefully this works

The the output put be
Code:
hopefully this works


Last edited by Scott; 10-24-2009 at 12:38 PM.. Reason: reword #5!
# 3  
Old 10-24-2009
ok, i see thanks very much for your answer, this helps me understand what is going on, is their any way to achieve the output i desired with just grep or would i have to pipe it into other functions to achieve the output i desire?
# 4  
Old 10-24-2009
You could pipe it through grep -v again.
# 5  
Old 10-24-2009
Quote:
Originally Posted by scottn
You could pipe it through grep -v again.
you mean like do:

cat test|grep -v 'figure'|grep -v 'hopefully' ?

that works on the small scale like here, but the end goal has 11 lines in front of, and 17 lines behind, and i only know of 1 point between those lines that is unique, the rest is repeated multiple times in the file, which is why i was hoping to figure this out with grep
# 6  
Old 10-24-2009
I meant:

Code:

grep -v -A 1 figure test | grep -v figure

(you don't need cat)
# 7  
Old 10-24-2009
Quote:
Originally Posted by scottn
I meant:

Code:

grep -v -A 1 figure test | grep -v figure

(you don't need cat)
ahh, didn't know that(i was taught piping in from cat, thanks)

however with the first grep -v -A 1 'figure' test, the output is the same as the input, making the second grep act the same inversing just that line, and not the last two lines

output of grep -v -A 1 figure test:
Code:
This is a test of grep
to see how inversion really works
and figure out the problem that the class is having
hopefully this works

and piped into the second grep:
Code:
This is a test of grep
to see how inversion really works
hopefully this works

which would be the same as doing grep -v 'figure' test

is their any type of file comparision function that i could output the result into comapre that with the original file, and only output the diffrences?
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Inconsistent `ps -eaf -o args | grep -i sfs_pcard_load_file.ksh | grep -v grep | wc -l`

i have this line of code that looks for the same file if it is currently running and returns the count. `ps -eaf -o args | grep -i sfs_pcard_load_file.ksh | grep -v grep | wc -l` basically it is assigned to a variable ISRUNNING=`ps -eaf -o args | grep -i sfs_pcard_load_file.ksh |... (6 Replies)
Discussion started by: wtolentino
6 Replies

2. UNIX for Dummies Questions & Answers

Piping grep into awk, read the next line using grep

Hi, I have a number of files containing the information below. """"" Fundallinfo 6.3950 14.9715 14.0482 """"" I would like to grep for Fundallinfo and use it to read the next line? I ideally would like to read the three numbers that follow in the next line and... (2 Replies)
Discussion started by: Paul Moghadam
2 Replies

3. UNIX for Dummies Questions & Answers

Bash - CLI - grep - Passing result to grep through pipe

Hello. I want to get all modules which are loaded and which name are exactly 2 characters long and not more than 2 characters and begin with "nv" lsmod | (e)grep '^nv???????????? I want to get all modules which are loaded and which name begin with "nv" and are 2 to 7 characters long ... (1 Reply)
Discussion started by: jcdole
1 Replies

4. Shell Programming and Scripting

AWK/GREP: grep only lines starting with integer

I have an input file 12.4 1.72849432773174e+01 -7.74784188610632e+01 12.5 9.59432114416327e-01 -7.87018212757537e+01 15.6 5.20139995965960e-01 -5.61612429666624e+01 29.3 3.76696387248366e+00 -7.42896194101892e+01 32.1 1.86899877018077e+01 -7.56508762501408e+01 35 6.98857157014640e+00... (2 Replies)
Discussion started by: chrisjorg
2 Replies

5. UNIX for Dummies Questions & Answers

Advanced grep'in... grep for data next to static element.

I have a directory I need to grep which consists of numbered sub directories. The sub directory names change daily. A file resides in this main directory that shows which sub directories are FULL backups or INCREMENTAL backups. My goal is to grep the directory for the word "full" and then... (2 Replies)
Discussion started by: SysAdm2
2 Replies

6. UNIX for Dummies Questions & Answers

Difference between grep, egrep & grep -i

Hi All, Please i need to know the difference between grep, egrep & grep -i when used to serach through a file. My platform is SunOS 5.9 & i'm using the korn shell. Regards, - divroro12 - (2 Replies)
Discussion started by: divroro12
2 Replies

7. Shell Programming and Scripting

grep for certain files using a file as input to grep and then move

Hi All, I need to grep few files which has words like the below in the file name , which i want to put it in a file and and grep for the files which contain these names and move it to a new directory , full file name -C20091210.1000-20091210.1100_SMGBSC3:1000... (2 Replies)
Discussion started by: anita07
2 Replies

8. UNIX for Dummies Questions & Answers

| help | unix | grep (GNU grep) 2.5.1 | advanced regex syntax

Hello, I'm working on unix with grep (GNU grep) 2.5.1. I'm going through some of the newer regex syntax using Regular Expression Reference - Advanced Syntax a guide. ls -aLl /bin | grep "\(x\)" Which works, just highlights 'x' where ever, when ever. I'm trying to to get (?:) to work but... (4 Replies)
Discussion started by: MykC
4 Replies

9. UNIX for Dummies Questions & Answers

| help | unix | grep - Can I use grep to return a string with exactly n matches?

Hello, I looking to use grep to return a string with exactly n matches. I'm building off this: ls -aLl /bin | grep '^.\{9\}x' | tr -s ' ' -rwxr-xr-x 1 root root 632816 Nov 25 2008 vi -rwxr-xr-x 1 root root 632816 Nov 25 2008 view -rwxr-xr-x 1 root root 16008 May 25 2008... (7 Replies)
Discussion started by: MykC
7 Replies

10. Shell Programming and Scripting

MEM=`ps v $PPID| grep -i db2 | grep -v grep| awk '{ if ( $7 ~ " " ) { print 0 } else

Hi Guys, I need to set the value of $7 to zero in case $7 is NULL. I've tried the below command but doesn't work. Any ideas. thanks guys. MEM=`ps v $PPID| grep -i db2 | grep -v grep| awk '{ if ( $7 ~ " " ) { print 0 } else { print $7}}' ` Harby. (4 Replies)
Discussion started by: hariza
4 Replies
Login or Register to Ask a Question