[comp.unix.questions] one more SED/AWK question

slj@mtung.ATT.COM (S. Luke Jones) (12/07/88)

I think I provided too much detail in my previous posting.  Let's assume
we have a text file
	blah blah SUDAN  blah
	blah blah CZECHOSLOVAKIA  blah
	blah blah MALAYSIA  blah
	blah blah CANADA  blah
	blah blah PERU  blah
Suppose I want to grab everything between CZECHOSLOVAKIA to PERU, not
counting PERU.  I *don't* know anything about the order of countries
in this file and I *don't* know that CANADA is the line before PERU.

	sed -n '/CZECH/,/PERU/p'

gives me what I want except it includes the line with PERU.  By
contrast,

	awk '/CZECH/,/PERU/'

prints precisely the lines I want, i.e., it does not include PERU.

Any suggestions?
-- 
                                                  S. Luke Jones
                                       AT&T Infor#####Bell Labs
        200 Laurel Avenue, Room MT 2E-337, Middletown, NJ 07748
    slj@mtung.att.com  -or-  ...!att!mtung!slj   (201)-957-2733

pjh@otter.hpl.hp.com (Patrick Hyland) (12/08/88)

The following will do what you want if you're using Bourne shell:

sed -n -e '
	/CZECH/{
: loop
		p
		n
		/PERU/!b loop
	}
' filename

Thanks to Maarten Litmaath for posting the original
suggestion from which this is derived. 
						Patrick Hyland.

wu@spot.Colorado.EDU (WU SHI-KUEI) (12/09/88)

In article <1076@mtung.ATT.COM> slj@mtung.UUCP (S. Luke Jones) writes:
>I think I provided too much detail in my previous posting.  Let's assume
>we have a text file
>	blah blah SUDAN  blah
>	blah blah CZECHOSLOVAKIA  blah
>	blah blah MALAYSIA  blah
>	blah blah CANADA  blah
>	blah blah PERU  blah
>Suppose I want to grab everything between CZECHOSLOVAKIA to PERU, not
>counting PERU.
[ stuff deleted, including an awk command that does NOT work ]

Instead of sed or awk, just use *ed*!!!!

	echo "/CZECH/,/PERU/-p" | ed - foo
                            ^
Just a guest here.  In reality:
Carl Brandauer
uunet!nbires!bdaemon!carl