On Wed, Jan 29, 2003 at 07:41:31PM +0000, Angus Leeming wrote: > Point 1. The .* RE operator is EXTREMELY greedy. Try and avoid it if at all > possible.
Indeed. > Point 2. Sometimes 'cut' is a better tool than 'sed'. I repectfully submit > that this: > > input=`grep "Last-Translator" $pofile` && { > # Remove 'Last-Translator: ' from the front of the string > input=`echo $input | sed 's/ */ /g' | cut -d ' ' -f 2-` > # The string now consists of "Jo Bloggs <jo@home>..." > # Use the < and > to extract the two parts. > translator=`echo $input | cut -d '<' -f 1 | sed 's/ *$//'` > email=`echo $input | cut -d '<' -f 2 | cut -d '>' -f 1` > } > > is cheaper and more robust than this: > grep "Last-Translator" $x | > sed -e 's/"Last-Translator: \(.*\)\( *\)<\(.*\)>\\n"/"translator" => >"\1", Concerning cheapness: y=${x%<*} translator=${j#* } y=${x#*<} email=${y%>*} should beat that. But that's a bash-ism, isn't it? Andre' -- Those who desire to give up Freedom in order to gain Security, will not have, nor do they deserve, either one. (T. Jefferson)