![]() |
|
|
|
|
|||||||
| Forums | Portal | Register | Forum Rules | FAQ | Contribute | Members List | Arcade | Search | Today's Posts | Mark Forums Read |
| UNIX for Advanced & Expert Users Advanced UNIX and Linux questions go here. Expert-to-Expert. |
|
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| regular expressions | whatever | Shell Programming and Scripting | 4 | 05-20-2007 01:30 PM |
| Help with regular expressions | arushunter | Shell Programming and Scripting | 13 | 12-23-2006 09:31 PM |
| regular expressions | jack1981 | Shell Programming and Scripting | 4 | 07-12-2006 12:10 PM |
| regular expressions in c++ | szzz | High Level Programming | 2 | 10-06-2003 07:33 AM |
| Regular Expressions | AresMedia | Shell Programming and Scripting | 1 | 08-22-2002 12:55 PM |
|
|
Submit Tools | LinkBack | Thread Tools | Search this Thread | Display Modes |
|
#1
|
|||
|
|||
|
Regular Expressions
Hi,
below is a piece of code written by my predecessor at work. I'm kind of a newbie and am trying to figure out all the regular expressions in this piece of code. It is really a tough time for me to figure out all the regular expressions. Please shed some light on the regular expressions in this code ssh_list() { typeset userAtHost="$1" typeset dir="${2-.}" typeset wild="${3-*}" info "SSH list: $userAtHost $src $dst" if [ "$REGION" != prod ] ;then userAtHost=$LOGNAME@localhost fi # Save, disable, and restore the verbose flag - any # verbose output would look like errors. typeset verbose="$(set -o |sed -n 's/^verbose *//p')" set +v typeset msgs="$(sftp $userAtHost 2>&1 <<EOF cd $dir ls EOF)" if [ "$verbose" = on ] ;then set -v fi # Strip the "Connecting to host..." line, prompts, blank lines # and login banners. What's left should only be error messages. typeset errs="$(echo "$msgs" | sed -e '/^Connecting to .*\.\.\.$/d' \ -e 's/sftp > //g' \ -e '/^[ ]*$/d' \ -e '/^#/d' \ -e '/^[-dDlbcps][-rwxsStTlL]\{9\}+\{0,1\} /d')" if [ "$errs" != "" ] ;then error "$errs" return 1 fi echo "$msgs" | while read line do case "$line" in -*\ $wild) echo ${line##* } ;;esac done return 0 } I'd like some explanation of these lines.... gurus please shed some light. Thank you for your time. Ram |
| Forum Sponsor | ||
|
|
|
#2
|
|||
|
|||
|
Quote:
Quote:
Quote:
$wild is defined up at the beginning of the function as either positional argument $3 or (if that is empty) an asterisk, which matches anything in glob wildcard notation. |
|
#3
|
|||
|
|||
|
Mastering Regular Expressions
Get yourself a copy of Mastering Regular Expressions by Jeffrey Friedl. You'll benefit quite a bit from it.
Shawn |
|
#4
|
|||
|
|||
|
Thank you era and Shawn
The script however works fine on sunSSH
It does not work on an OPEN SSH, I tries to tweak in a little more with the regular expressions... but it still does not help. Any idea how to overcome this problem. when I execute the same script on OPEN SSH box here is the error I get. If I logon interactively from the OPEN SSH box and execute the commands one by one, they work. when they are placed in a script the script doesnot work.any help is appreciated. INFO: SSH list: user@host outgoing x001_ameint_*.zip ERROR: #^M ERROR: #==============================================^M ERROR: #Bowne Marketing & Business Communications^M ERROR: #SFTP Server (PCN)^M ERROR: #==============================================^M ERROR: #^M ERROR: ^M ERROR: sftp> sftp> drwx------ 0 0 0 0 May 21 15:25 . ERROR: drwx------ 0 0 0 0 Mar 17 11:58 .. ERROR: drwx------ 0 0 0 0 May 21 15:59 archive ERROR: -rw------- 0 0 0 4152 May 9 11:44 x001_REPORTS_ameint_AIGODN00857.zip ERROR: -rw------- 0 0 0 42138973 May 19 14:16 x001_ameint_BP010F0010_00002_003.zip.done ERROR: -rw------- 0 0 0 377449320 Apr 14 14:20 x001_ameint_BP010F0010_00264_001.zip.done ERROR: -rw------- 0 0 0 637950 May 21 13:40 x001_ameint_abc.zip ERROR: -rw------- 0 0 0 408 May 21 13:49 x001_ameint_def.zip ERROR: -rw------- 0 0 0 408 May 21 13:53 x001_ameint_xyz.zip ERROR: sftp> Invalid command.^M ERROR: sftp> here are my tweaked regular expressions: ssh_list() { typeset userAtHost="$1" typeset dir="${2-.}" typeset wild="${3-*}" info "SSH list: $userAtHost $dir $wild" # Save, disable, and restore the verbose flag - any # verbose output would look like errors. typeset verbose="$(set -o |sed -n 's/^verbose *//p')" set +v typeset msgs="$(sftp $userAtHost 2>&1 <<EOF cd $dir ls -l EOF)" echo $msgs > TEXT.dat if [ "$verbose" = on ] ;then set -v fi # Strip the "Connecting to host..." line, prompts, blank lines # and login banners. What's left should only be error messages. typeset errs="$(echo "$msgs" | sed -e '/^Connecting to .*\.\.\.$/d' \ # -e '/^ERROR: unable to initialize mechanism library [/usr/lib/gss/gl/mech_krb5.so]/d' \ -e '/ERROR: //g' \ -e 's/^$//g' \ -e 's/sftp> //g' \ -e '/^[ ]*$/d' \ -e '/^#/d' \ -e '/^[-dDlbcps][-rwxsStTlL]\{9\}+\{0,1\} /d')" if [ "$errs" != "" ] ;then error "$errs" return 1 fi echo "$msgs" | while read line do case "$line" in -*\ $wild) echo ${line##* } ;;esac done return 0 } ssh_sendrecv() { typeset op="$1" typeset userAtHost="$2" typeset src="$3" typeset dst="$4" info "SSH transfer: $op $userAtHost $src $dst" #if [ "$REGION" != prod ] ;then #userAtHost=$LOGNAME@localhost #fi # Save, disable, and restore the verbose flag - any # verbose output would look like errors. typeset verbose="$(set -o |sed -n 's/^verbose *//p')" set +v typeset msgs="$(sftp $userAtHost 2>&1 <<EOF $op $src $dst EOF)" if [ "$verbose" = on ] ;then set -v fi # Strip the "Connecting to host..." line, prompts, blank lines # and login banners. What's left should only be error messages. typeset errs="$(echo "$msgs" | sed -e '/^Connecting to .*\.\.\.$/d' \ -e 's/^$//g' \ -e 's/sftp> //g' \ -e '/^[ ]*$/d' \ -e '/^#/d')" if [ "$errs" != "" ] ;then error "$errs" return 1 fi return 0 } |
|||
| Google The UNIX and Linux Forums |
| Tags |
| regex, regular expressions |
| Thread Tools | Search this Thread |
| Display Modes | |
|
|