From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9427 invoked from network); 15 Aug 2005 10:32:47 -0000 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by ns1.primenet.com.au with SMTP; 15 Aug 2005 10:32:47 -0000 Received: (qmail 51263 invoked from network); 15 Aug 2005 10:32:41 -0000 Received: from sunsite.dk (130.225.247.90) by a.mx.sunsite.dk with SMTP; 15 Aug 2005 10:32:41 -0000 Received: (qmail 17488 invoked by alias); 15 Aug 2005 10:32:35 -0000 Mailing-List: contact zsh-users-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 9314 Received: (qmail 17478 invoked from network); 15 Aug 2005 10:32:34 -0000 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by sunsite.dk with SMTP; 15 Aug 2005 10:32:34 -0000 Received: (qmail 50139 invoked from network); 15 Aug 2005 10:32:34 -0000 Received: from ns9.hostinglmi.net (213.194.149.146) by a.mx.sunsite.dk with SMTP; 15 Aug 2005 10:32:27 -0000 Received: from 212.red-80-35-44.pooles.rima-tde.net ([80.35.44.212] helo=localhost) by ns9.hostinglmi.net with esmtpa (Exim 4.51) id 1E4cGb-0002c6-0m for zsh-users@sunsite.dk; Mon, 15 Aug 2005 12:32:29 +0200 Date: Mon, 15 Aug 2005 12:35:57 +0200 From: DervishD To: Zsh Users Subject: Replacing sed for zsh portability Message-ID: <20050815103557.GA1411@DervishD> Mail-Followup-To: Zsh Users Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit User-Agent: Mutt/1.4.2.1i Organization: DervishD X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - ns9.hostinglmi.net X-AntiAbuse: Original Domain - sunsite.dk X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - dervishd.net X-Source: X-Source-Args: X-Source-Dir: X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.0.4 Hi all :) I'm going to release some scripts, and they have the documentation within the own script. In my system I extract it using GNU sed, but now I cannot do it since I'm using a GNU extension. In order to avoid the non-portable '\|' sed regex operator, I must do the following: sed -ne '/<=$/,/=>$/p' < $0 | while read line do print -- ${${line#\#}#(<=|=>| )} done The documentation is enclosed between "<=" and "=>" delimiters, something like this: #<= # This is an example of documentation # Here are more lines # # Yet even more lines here ... #=> Since I cannot use sed for the entire work unless I complicate the script (doing multiple substitutions and the like), I want to get rid of the current script and doing all the job in ZSH. It doesn't matter if it is very slow, speed here is not an issue. Can this be done in zsh easily or the only way is to use a while loop to ignore lines before the delimiter and another to process the documentation itself? Otherwise I'll try to write a portable sed script, although I would prefer to remove any dependency except for zsh itself of course. Another question, related to this. It seems that the X|Y glob operator doesn't work left-to-right, but shortest-first. If I do this: print ${line#\#(<=|=>| |)} then the 'nothing' at the end is used as the match, and the delimiters are not matched. Is doing two substitutions the only way (as I'm doing currently)? Thanks a lot in advance :) Raúl Núñez de Arenas Coronado -- Linux Registered User 88736 | http://www.dervishd.net http://www.pleyades.net & http://www.gotesdelluna.net It's my PC and I'll cry if I want to...