cshort@nmsu.edu (Spmg*d, Lord of Potted Meat Product) (02/26/91)
hi i have some large protien files that i am trying to search for keywords and when they are found, print specific areas of text around it. let me be more clear: this is what my text looks like: /// entry title date accession reference superfamily sequence /// if i get a hit on accession, i would like to print the whole record. the reason i am not running this through a database is the file is about 19megs thanks |----------------------|---------------------- | |the world is spam and | Chris Short | | we are but the key | Computing Research Labatory | |--------|-------------| Box 30001/3 CRL | | New Mexico State University | | Las Cruces, NM 88003-0001 | | Email: Cshort@nmsu.edu Fax:505 646 6218|-------------------| | Voice: 505 646 6216 |SpamKey productions| | -------------------------|-------------------|
jik@athena.mit.edu (Jonathan I. Kamens) (02/26/91)
You could do something like this:
#!/bin/sh
if [ $# -ne 2 ]; then
echo "Usage: $0 pattern filename"
exit 1
fi
AWK='BEGIN { doprint = 0
record = ""
}
/\/\/\// { if (doprint) { printf("%s", record) }
record = ""
doprint = 0
next
}
/'$1'/ { doprint = 1 }
{ record = record $0 "\n" }'
awk "$AWK" $2
If you only want to compare your pattern to a certain line of the entry, then
you can count entry lines as you go along and only set doprint to true if the
pattern matches *and* the current line number is the line of the entry against
which you want to compare.
--
Jonathan Kamens USnail:
MIT Project Athena 11 Ashford Terrace
jik@Athena.MIT.EDU Allston, MA 02134
Office: 617-253-8085 Home: 617-782-0710