Longest length of string in array


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Longest length of string in array
# 1  
Old 11-09-2011
Longest length of string in array

I would be grateful if someone could help me. I am trying to write a .sh script in UNIX.

I have the following code;
Code:
User[0]=john
User[1]=james
User[2]=ian
User[3]=martin
 
for x in ${User[@]}
do
  print ${#x}
done

This produces the following output;
Code:
4
5
3
6

What I would like to do is only print the longest length of string, in this case '6'. (I will also be storing the single result in a variable for later use). I have experimented with awk & gawk etc and I'm really struggling. The above code is a very simple breakdown of a more complicated problem, but if someone could solve the above it would make a big difference.

Appologies if this is very straight forward, quite new to this.
Regards

---------- Post updated at 05:11 PM ---------- Previous update was at 05:02 PM ----------

I should of added that i need to keep the for loop, hopefully there is a way of doing it within this kind of loop.

Last edited by Scott; 11-09-2011 at 01:23 PM.. Reason: Please use code tags
# 2  
Old 11-09-2011
Just check for a larger value each time through the loop and then print it afterwards.
Code:
m=-1
for x in ${User[@]}
do
   if [ ${#x} -gt $m ]
   then
      m=${#x}
   fi
done
print $m

# 3  
Old 11-10-2011
thanks for the reply. That works!
Appreciated.
# 4  
Old 12-13-2011
I would like to make an addition to the above. I have the following;

Code:
#!/bin/sh
 
theUse[0]=john
theUse[1]=james
theUse[2]=ian
theUse[3]=martin
m=-1
for x in ${theUse[@]}
do
        if [ ${#x} -gt $m ]
        then
                m=${#x}
        fi
done
printf "%0s %-$m %0s\n" random text $m random text

The difference with the above (addition of the last line) is that I'm trying to use the variable $m (which stores the length of the longest string) and use it as a parameter within the printf padding.

I've tried many different ways but it doesnt seem to work. Any ideas?

Any suggestions would be appreciated.
Moderator's Comments:
Mod Comment
Please use code tags when posting data and code samples!

Last edited by vgersh99; 12-13-2011 at 12:59 PM.. Reason: code tags, please!
# 5  
Old 12-13-2011
Code:
printf "%0s %-$m %0s\n" 'random text' $m 'random text'

# 6  
Old 12-13-2011
Sorry, I made a mistake in my code. The print line was meant to read like so;
Code:
printf "%0s %-$m %0s\n" 'random text' 'random text' 'random text'

This would produce the following output;
Code:
random text random text      random text

With a gap of 6 spaces between the last two strings (6 being the length of the longest username 'martin')

hope that makes sense.
Regards

---------- Post updated at 05:12 PM ---------- Previous update was at 05:10 PM ----------

when submitting the last post the all the random text strings were aligned together. I basically need a gap of 6 spaces between the last two strings. sorry


Moderator's Comments:
Mod Comment Please use code tags!

Last edited by zaxxon; 12-14-2011 at 05:34 AM.. Reason: code tags, see PM
# 7  
Old 12-13-2011
Something like:
Code:
[user@host2: /tmp] printf "%s %s %*s %s\n" 'random' 'random' 6 ' ' 'random'
random random        random


Last edited by CarloM; 12-14-2011 at 07:28 AM.. Reason: clarity...
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Parse the longest matching string

Hello experts, I am trying to unscramble a mixed signal into component signals. Let the list of known signals be $ cat tmplist DU DU4016 GFF GFF2010 GFF201019 G2115 G211 DU40 (1 Reply)
Discussion started by: senhia83
1 Replies

2. Shell Programming and Scripting

wc -L giving incorrect length of longest line

Running below line gives 3957 as length of longest line in file 20121119_SRMNotes_init.dat awk ' { if ( length > 3950 ) { x = length } }END{ print x }' 20121119_SRMNotes_init.dat While wc -L 20121119_SRMNotes_init.dat gives output as 4329. Why is there a difference between these two commands.... (2 Replies)
Discussion started by: Satish Mantha
2 Replies

3. Shell Programming and Scripting

Finding the length of the longest column

Hi, I am trying to figure out how to get the length of the longest column in the entire file (because the length varies from one row to the other) I was doing this at first to check how many fields I have for the first row: awk '{print NF; exit}' file Now, I can do this: awk '{ if... (4 Replies)
Discussion started by: MIA651
4 Replies

4. Shell Programming and Scripting

Array Length Reports as Having Length when it is Empty?

Hello All, I have this script that does stuff like "starting, stopping & restarting" a Daemon Process running on my machine... My main question is why in part of my code (which you will see below) does the Array Length (i.e. ${#PIDS} ) return "1" when I know the Array is empty..? Here is... (17 Replies)
Discussion started by: mrm5102
17 Replies

5. Shell Programming and Scripting

awk uniq and longest string of a column as index

I met a challenge to filter ~70 millions of sequence rows and I want using awk with conditions: 1) longest string of each pattern in column 2, ignore any sub-string, as the index; 2) all the unique patterns after 1); 3) print the whole row; input: 1 ABCDEFGHI longest_sequence1 2 ABCDEFGH... (12 Replies)
Discussion started by: yifangt
12 Replies

6. UNIX for Dummies Questions & Answers

Display all the words whose length is equal to the longest word in the text

Hi Guys, I was going some trial and error to see if I can find the longest word in a text. I was using Pipes because they are easier to use in this case. I was stuck on this for a while so I thought I'll get some help with it. I tried this code to separate all the words in a text in... (4 Replies)
Discussion started by: bawse.c
4 Replies

7. Programming

How to find length of string and pass into char array in C?

Hi All I want to take a Hexadecimal number as input and i want to find lenth of the input and pass it to char s ( char s ). I have a program to convert hexadecial to binary but it is taking limited input but i want to return binary number based on input. How? (1 Reply)
Discussion started by: atharalikhan
1 Replies

8. Shell Programming and Scripting

Find longest string and print it

Hello all, I need to find the longest string in a select field and print that field. I have tried a few different methods and I always end up one step from where I need to be. Methods thus far: nawk '{if (length($1) > long) long=length($1); if(length($1)==long) print $1}' The above... (6 Replies)
Discussion started by: SEinT
6 Replies

9. Shell Programming and Scripting

awk - replace number of string length from search and replace for a serialized array

Hello, I really would appreciate some help with a bash script for some string manipulation on an SQL dump: I'd like to be able to rename "sites/WHATEVER/files" to "sites/SOMETHINGELSE/files" within the sql dump. This is quite easy with sed: sed -e... (1 Reply)
Discussion started by: otrotipo
1 Replies

10. Shell Programming and Scripting

Find the length of the longest line

Dear All, To find the length of the longest line from a file i have used wc -L which is giving the proper output... But the problem is AIX os does not support wc -L command. so is there any other way 2 to find out the length of the longest line using awk or sed ? Regards, Pankaj (1 Reply)
Discussion started by: panknil
1 Replies
Login or Register to Ask a Question