Take the 2-minute tour ×

Possible Duplicate:
I specifically want to delete my grep output string from the text file

I'm a little bit new with Linux and I have a problem. I have a text file called file_a.txt My first command

grep -A 12 ".production =" file_a.txt

The output is a few block. Each block of string contains 13 rows

I specifically want to delete all the block of strings I got with the grep command from the original file file_a.txt I do not want to send the grep output to a new file. Also I do not want to to use grep -v because it will not work in my case.

I have tried something like things like this, but nothing is working:

cut < grep -A 12 ".production =" file_a.txt

sed -i '/grep -A 12 ".production ="/d' file_a.txt

share|improve this question

migrated from stackoverflow.com Oct 9 '12 at 11:58

This question came from our site for professional and enthusiast programmers.

marked as duplicate by Michael Mrozek Oct 9 '12 at 13:35


what happened with my answer??? –  Hola Soy Edu Feliz Navidad Oct 9 '12 at 10:36
@HolaSoyEduFelizNavidad no deleted answer showing up, so you/the browser probably didn't successfully post it. I checked, you didn't post at the wrong question (at least on Stack Overflow) –  sehe Oct 9 '12 at 10:40
@Clayton please don't cross post, as a Unix SE moderator I'm requesting this be closed here and moved there. –  xenoterracide Oct 9 '12 at 11:16
@xenoterracide huh. Why didn't you cast a close-vote (offtopic, SU) then? Also, this is entirely appropriate for Stack Overflow IMO. There is a certain amount of overlap, as shell scripting is considered programming too –  sehe Oct 9 '12 at 11:26
@sehe note SU is not Unix, and it is appropriate but cross posting is frowned upon. we really don't need people posting a verbatim copy of the same question on SO, SU, SF, AU, and U&L (within 10 minutes) just so they can get points or a faster answer. I didn't vote to close offtopic because it's technically? not. I think there ought to be rules about crossposting and flag as cross site duplicate... but it's a pipe dream. –  xenoterracide Oct 9 '12 at 11:36

2 Answers 2

I think you are looking for this:

sed -i '/.production =/,+12d' file_a.txt

When sed finds you patterns it "deletes" 12 lines

(warning, modifies file_a.txt in-place)

share|improve this answer
Except the next 12 rows need to be deleted as well. –  Ignacio Vazquez-Abrams Oct 9 '12 at 10:36
@IgnacioVazquez-Abrams whoops, added –  sehe Oct 9 '12 at 10:38
@sehe +1 for fast posting and editing ! :) –  Kent Oct 9 '12 at 10:39
Hi, guys, very thanks for the help. –  Clayton Oct 9 '12 at 11:57
sed -i '/\.production =/,+12d' file_a.txt

would do the job

share|improve this answer