Please see this


Contents

- INDEX
- HP-UX Index
- Solaris
- Linux Index
- Other Unix types
- General Unix
- Unix Networking
- Unix Scripts
- Unix databases

Associated Information

- Awk and sed
- Regular expressions summary

Useful Links

- GAWK Manual
- Sed resources

Working out maximum length of a string

To work out the maximum length of a string of same characters (in this example a's and A's), a solution using the ksh is:

#!/usr/bin/sh MAX=0 while read LINE do LENGTH=`echo $LINE | tr -cs "[a][A]" "[#*]" | awk ' BEGIN { FS = "#" } max=0 { for (i =1; i < NF; ++i ) len = length($i) if ( len > max) max = len} {print max }'` if [ $LENGTH -gt $MAX ]; then MAX=$LENGTH fi done echo $MAX

This will read stdin a line at a time, all characters except a and A are converted into a single # (tr command). The awk script then separates the fields using # as the deilimiter, works out the length of each string on a line and prints the maximum value. If this is bigger than the current maximum ($MAX), $MAX is set to this value. Once all the lines are processed, the value is echoed to stdout.

To do the same in the csh shell:

#!/usr/bin/csh set MAX = 0 while ( 1 ) set LINE = "$<" if ( "$LINE" == "" ) then break endif set LENGTH = `echo $LINE | tr -cs "[a][A]" "[#*]" | awk -f test.awk` if ( $LENGTH > $MAX ) then set MAX = $LENGTH endif end echo $MAX

In this example the awk script is in a separate file test.awk


Copyright 2000 Intronet Computers Ltd
Email: Intronet Computers for enquiries