From owner-freebsd-questions@FreeBSD.ORG Thu Jun 21 19:56:24 2012 Return-Path: Delivered-To: questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id C93171065670 for ; Thu, 21 Jun 2012 19:56:24 +0000 (UTC) (envelope-from Devin.Teske@fisglobal.com) Received: from mx1.fisglobal.com (mx1.fisglobal.com [199.200.24.190]) by mx1.freebsd.org (Postfix) with ESMTP id 89E638FC12 for ; Thu, 21 Jun 2012 19:56:24 +0000 (UTC) Received: from smtp.fisglobal.com ([10.132.206.15]) by ltcfislmsgpa01.fnfis.com (8.14.4/8.14.4) with ESMTP id q5LJuNNR024064 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NOT); Thu, 21 Jun 2012 14:56:24 -0500 Received: from dtwin (10.14.152.55) by smtp.fisglobal.com (10.132.206.15) with Microsoft SMTP Server (TLS) id 14.2.283.3; Thu, 21 Jun 2012 14:56:23 -0500 From: Sender: Devin Teske To: "'Odhiambo Washington'" References: <1521E29F-C0BC-46A8-A428-FC7183C6E 689@fisglobal.com> In-Reply-To: <1521E29F-C0BC-46A8-A428-FC7183C6E689@fisglobal.com> Date: Thu, 21 Jun 2012 12:56:33 -0700 Message-ID: <136a01cd4fe7$f6053af0$e20fb0d0$@freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Outlook 14.0 Thread-Index: AQHHVXHlzLs30//OBCHn7Su2XUxMQAL1LUurAbd/azQCHWvg0QKfyJt0AXM6a2sCAalxtAHyetOdAcqPFJQCMQ/tOwMUUdcZAUJo4RwCNT6zuAKGbk9LAf2+L4SWIjqLsA== Content-Language: en-us X-Originating-IP: [10.14.152.55] X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.7.7855, 1.0.260, 0.0.0000 definitions=2012-06-21_05:2012-06-21, 2012-06-21, 1970-01-01 signatures=0 Cc: 'questions' Subject: RE: A bash scripting question X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 Jun 2012 19:56:24 -0000 > -----Original Message----- > From: owner-freebsd-questions@freebsd.org [mailto:owner-freebsd- > questions@freebsd.org] On Behalf Of Devin Teske > Sent: Thursday, June 21, 2012 9:24 AM > To: Odhiambo Washington > Cc: questions > Subject: Re: A bash scripting question > > > On Jun 21, 2012, at 6:40 AM, Odhiambo Washington wrote: > > > How Can I simplify/perfect the following script, so that I read _ALL_ the > > lines in the file and act on the content as shown below, so that I do not > > have to specifiy an action per line? > > > > This below is doing exactly what i need BUT reading one line at a time > > untill the 10th line, if i want more i add manually... > > This might help some1 someday! But if there is a way to perfect it please > > do so..... > > > > #!/usr/local/bin/bash > > > > smsfile=email_to_sms > > `grep Subject /var/spool/mail/sms >>$smsfile` > > if [[ -s $smsfile ]] ; then > > cat /dev/null > /var/spool/mail/sms > > sed -i 's/Subject: //g' $smsfile > > echo `sed -n '1p' $smsfile` | /usr/bin/gammu --sendsms TEXT `awk 'NR==1 > > {print $1}' $smsfile` > > echo `sed -n '2p' $smsfile` | /usr/bin/gammu --sendsms TEXT `awk 'NR==2 > > {print $1}' $smsfile` > > echo `sed -n '3p' $smsfile` | /usr/bin/gammu --sendsms TEXT `awk 'NR==3 > > {print $1}' $smsfile` > > echo `sed -n '4p' $smsfile` | /usr/bin/gammu --sendsms TEXT `awk 'NR==4 > > {print $1}' $smsfile` > > echo `sed -n '5p' $smsfile` | /usr/bin/gammu --sendsms TEXT `awk 'NR==5 > > {print $1}' $smsfile` > > echo `sed -n '6p' $smsfile` | /usr/bin/gammu --sendsms TEXT `awk 'NR==6 > > {print $1}' $smsfile` > > echo `sed -n '7p' $smsfile` | /usr/bin/gammu --sendsms TEXT `awk 'NR==7 > > {print $1}' $smsfile` > > echo `sed -n '8p' $smsfile` | /usr/bin/gammu --sendsms TEXT `awk 'NR==8 > > {print $1}' $smsfile` > > echo `sed -n '9p' $smsfile` | /usr/bin/gammu --sendsms TEXT `awk 'NR==9 > > {print $1}' $smsfile` > > echo `sed -n '10p' $smsfile` | /usr/bin/gammu --sendsms TEXT `awk 'NR==10 > > {print $1}' $smsfile` > > else > > echo "***********Sorry the SMS FILE "$smsfile" is empty.************" > > fi > > gammu-smsd start > > cat email_to_sms >> email_to_sms2 > > cat /dev/null > email_to_sms > > > > Try the following. > > #!/bin/sh > smsfile=email_to_sms > spoolfile=/var/spol/mail/sms > grep Subject "$spoolfile" >> "$smsfile" > if [ -s "$smsfile" ]; then > : > "$spoolfile" > sed -e 's/Subject: //g' "$smsfile" | awk ' > { > if (NR > 10) exit > print | "/usr/bin/gammu --sendsms TEXT " $1 > }' > else > echo "***********Sorry the SMS FILE "$smsfile" is > empty.************" > fi > gammu-smsd start > cat "$smsfile" >> email_to_sms2 > : > "$smsfile" > I can beat my original response (above), while retaining original functionality... #!/bin/sh spoolfile=/var/spool/mail/sms awk -v pat="^Subject: " ' $0 ~ pat { sub(pat,"") print | "/usr/bin/gammu --sendsms TEXT " $1 }' "$spoolfile" Or, as a shell "One-Liner" (compatible with any shell and any awk)... awk -v pat="^Subject: " '$0~pat{sub(pat,"");print|"/usr/bin/gammu --sendsms TEXT "$1}' "$spoolfile" -- Devin _____________ The information contained in this message is proprietary and/or confidential. If you are not the intended recipient, please: (i) delete the message and all copies; (ii) do not disclose, distribute or use the message in any manner; and (iii) notify the sender immediately. In addition, please be aware that any message addressed to our domain is subject to archiving and review by persons other than the intended recipient. Thank you.