in the above scenario, we know the word (excellency). but in the scenario this script will work on, the words will be unknown. but the number of characters in whatever the word is will always be divided by 2.
in the above while loop scenario, i knew the number of characters in the word, because i knew the word, so i hardcoded the "cut" command to break it apart. but that wont be case when this script is put to work.
Here is another example of how to do this that uses a function to split strings into arrays and then compares the array elements. This script uses several extensions to the standards, but works with recent versions of both ksh and bash:
Code:
#!/bin/ksh
# Usage: tryme string1 string2 [stringX stringX+1]...
# DESCRIPTION:
# The tryme utility will demonstrate the use of the split2() shell
# function by calling it twice for each pair of operands supplied. It
# then reports whether each pair of characters in the corresponding
# strings match.
split2() {
# Usage: split2 arrray_name string
# DESCRIPTION:
# The split2 function will split string into 2 character pairs and assign
# those pairs to elements of the array specified by array_name with
# subscripts starting with 1. If string consists of an odd number of
# characters, the last element assigned to the array will only contain
# one character.
s2_tmp2=1
for((s2_tmp1 = 0; s2_tmp1 < ${#2}; s2_tmp1 += 2))
do
eval $1[$s2_tmp2]=${2:$s2_tmp1:2}
s2_tmp2=$((s2_tmp2 + 1))
done
}
while [ $# -ge 2 ]
do
printf "Processing %s and %s\n" "$1" "$2"
split2 v1 "$1"
split2 v2 "$2"
if [ ${#v1[@]} -ge ${#v2[@]} ]
then m=${#v1[@]}
else m=${#v2[@]}
fi
for((i = 1; i <= m; i++))
do printf "v1[%d]=%s, v2[%d]=%s\n" $i "${v1[$i]}" $i "${v2[$i]}"
if [[ "X${v1[$i]}" == "X${v2[$i]}" ]]
then printf "v1[%d] is the same as v2[%d]\n" $i $i
else printf "v1[%d] is not the same as v2[%d]\n" $i $i
fi
done
shift 2
done
An example using this script is:
Code:
tryme excellency exbeuukknn 12345 abc
which produces the output:
Code:
Processing excellency and exbeuukknn
v1[1]=ex, v2[1]=ex
v1[1] is the same as v2[1]
v1[2]=ce, v2[2]=be
v1[2] is not the same as v2[2]
v1[3]=ll, v2[3]=uu
v1[3] is not the same as v2[3]
v1[4]=en, v2[4]=kk
v1[4] is not the same as v2[4]
v1[5]=cy, v2[5]=nn
v1[5] is not the same as v2[5]
Processing 12345 and abc
v1[1]=12, v2[1]=ab
v1[1] is not the same as v2[1]
v1[2]=34, v2[2]=c
v1[2] is not the same as v2[2]
v1[3]=5, v2[3]=
v1[3] is not the same as v2[3]
This User Gave Thanks to Don Cragun For This Post:
in my python script i have loop like below:
for item in itemlist:
if <condition>:
<code>
else:
<code>
if <condition>:
if <condition>:
<code>
else:
for type in types:
if... (1 Reply)
Oracle Linux : 6.4/bash shell
In the below I want to break out of the loop when it enters the 5th iteration.
#!/bin/bash
for i in 1 2 3 4 5 6
do
echo "$i"
if
echo "Oh Nooo... i = $i. I need to stop the iteration and jump out of the loop"
then break
fi
done
But, it only... (3 Replies)
Hi I'm comparing same files names which are in different folders .
The first for loop for the files in DAY1 folder and
the second for loop for the files in DAY2 folder .
the first IF condition is for checking whether the file names are equal
the second If condtion is for checking the... (4 Replies)
I have a file that contains the following:
^field LINE_1 data
^field LINE_2 data
^field LINE_3 data
^field LINE_4 data
^field LINE_5 data
...
And im looking to do a line break at the end of the number before the text to make it look like this
^field LINE_1 ... (11 Replies)
Hi Gurus
I am new to this forum.. I am using HP Unix OS.
I have one single string in input file as shown below
Abc123 | cde | fgh | ghik| lmno | Abc456 |one |two |three | four | Abc789 | five | Six | seven | eight | Abc098 | ........
I want to achive the result in a output file as shown... (3 Replies)
I've been trying this, and can't get it right. I want to put a line break before a word, but only if it's *not* the last word in the line. So if the break work was "fish," then...
We want to fish tomorrow
...would become...
We want to
fish tomorrow
...but this line would remain... (3 Replies)
Hi gurus, I have the following part of code which I am using for treating input
#!/bin/bash
while ]; do
arg=$1; shift
case $arg in
-u)
users="$1"
shift
;;
-g)
groups="$1"
shift
;;
... (4 Replies)
I am having trouble figuring this code
I want to grep a text from a file and if it match certain text it break out of the loop or it should continue searching for the text
Here is what I have written but it isn't working
while true
f=`grep 'END OF STATUS REPORT' filename`
do
if ... (9 Replies)
Hi all, im doing this script in which i read from a logfile line by line, my problem is this:
The script was working fine until i added this statement to SSH into another machine to look for some data, it enters and retrieves the data just fine, but for some strange reason after it goes thru the... (1 Reply)
H,
I am running the following log.sh shell script.
$no_of_ps=7
while
do
echo "hello $no_of_ps"
ps_file=`tail -$no_of_ps /tmp/A380_RFS24/test.ls | head -1`
no_of_ps=`expr $no_of_ps - 1`
echo "package is: $ps_file" >> /tmp/A380_RFS24/log/A380_RFS24.log
ps_file1=`echo $ps_file| sed... (1 Reply)