Help a novice: Will "sed" do?
Maarten Litmaath
maart at cs.vu.nl
Tue Jul 18 04:35:19 AEST 1989
rostamia at umbc3.UMBC.EDU (Dr. Rouben Rostamian) writes:
\I need a command or a script that searches a text file for a given
\word or pattern and prints out all paragraphs that contain that word
\or pattern. Paragraphs are blocks of text separated by one or
\more blank lines.
----------8<----------8<----------8<----------8<----------8<----------
#!/bin/sh
test $# = 0 && {
echo "Usage: `basename $0` <pattern> [<files>]" >&2
exit 1
}
pattern=`echo "$1" | sed 's-/-\\\\/-g'` # quote slashes in the pattern
shift
tab="`ctrl I`" # if you don't have `ctrl': tab=" " (a hard tab)
empty="^[ $tab]*$" # the pattern of an `empty' line
SED="
: gap
/$empty/!b para
: gap1
n
b gap
: para
/$pattern/b found
H
n
/$empty/!b para
: cleanup
s/.*//
x
b gap1
: found
H
\${
g
p
}
n
/$empty/!b found
g
p
b cleanup
"
sed -n "$SED" $*
----------8<----------8<----------8<----------8<----------8<----------
--
"... a lap-top Cray-2 with builtin |Maarten Litmaath @ VU Amsterdam:
cold fusion power supply" (Colin Dente) |maart at cs.vu.nl, mcvax!botter!maart
More information about the Comp.unix.questions
mailing list