[Solved] Need Help in reading Response file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting [Solved] Need Help in reading Response file
# 1  
Old 03-02-2014
[Solved] Need Help in reading Response file

Hi All,

I have a requirement to read response file which looks like below

Ex:

NAME=SAM
DOB=01/01/1980
ADDRESS=
7658 James Street
NewYork
0000


Now, I need to take NAME, DOB, ADDRESS into variables

I am fine taking NAME and DOB

I need help on how can I take Multiple Lines into one variable?

Thanks
Kishore
# 2  
Old 03-02-2014
Do you have any way to control how the response file is generated ?

If so, i suggest you to generate the ADDRESS like :

Code:
ADDRESS="7658 James Street
NewYork
0000"

or

Code:
ADDRESS="7658 James Street,NewYork,0000"

You can then just execut the response_file to load the variabes in your environment

in csh :
Code:
source ./response_file

in sh/ksh/bash:
Code:
. ./response_file

# 3  
Old 03-02-2014
LONGHAND, using OSX 10.7.5, default bash terminal...
If the response file is small like your example then this works...
Note that a comma is deliberately added just for better appearance; it could be
a newline if you wish...
Code:
#/bin/bash
# multi_vars.sh
ifs_str="$IFS"
IFS="
"
echo 'NAME=SAM
DOB=01/01/1980
ADDRESS=
7658 James Street
NewYork
0000' > /tmp/multi_vars.txt
read -d '' -r text < /tmp/multi_vars.txt
echo ""
echo "$text"
echo ""
echo "Start of placing substrings into variables..."
echo ""
var_array=($text)
n=0
while true
do
	if [ $n -ge ${#var_array[@]} ]
	then
		break
	fi
	subtext="${var_array[$n]}"
	if [ "${subtext:0:4}" == "NAME" ]
	then
		name=${var_array[0]}
	fi
	if [ "${subtext:0:3}" == "DOB" ]
	then
		dob=${var_array[1]}
	fi
	if [ "${subtext:0:7}" == "ADDRESS" ]
	then
		# Added a comma just for added completeness... ;o)
		address="${var_array[$n]}${var_array[$[ ( $n + 1 ) ]]}, ${var_array[$[ ( $n + 2 ) ]]}"
	fi
	number="${var_array[$n]}"
	n=$[ ( $n + 1 ) ]
done
echo "$name"
echo "$dob"
echo "$address"
echo "$number"
echo ""
echo "DONE!"
echo ""
IFS="$ifs_str"
exit 0

Results:-
Code:
Last login: Sun Mar  2 19:29:52 on ttys000
AMIGA:barrywalker~> ./multi_vars.sh

NAME=SAM
DOB=01/01/1980
ADDRESS=
7658 James Street
NewYork
0000

Start of placing substrings into variables...

NAME=SAM
DOB=01/01/1980
ADDRESS=7658 James Street, NewYork
0000

DONE!

AMIGA:barrywalker~> _

# 4  
Old 03-02-2014
Hi Wise,

Thanks for your Quick Reply

Sorry forgot to inform that

Address Varible might have Mutiple Lines. in Example i gave only 3 lines, what if we have a variable number of lines

Could you pl help me in that

Thanks
# 5  
Old 03-02-2014
Just about to HTH...

What will be the maximum number of lines that ADDRESS will span?
I only need the maximum at this point...

Will continue tomorrow.

HTH.

---------- Post updated at 10:58 PM ---------- Previous update was at 10:38 PM ----------

Decided to stay up and quickly do a test piece...

This should take into account multiple newlines in the ADDRESS section:-
Code:
#/bin/bash
# multi_vars.sh
ifs_str="$IFS"
IFS="
"
echo 'NAME=SAM
DOB=01/01/1980
ADDRESS=
7658 James Street
NewYork
0000' > /tmp/multi_vars.txt
read -d '' -r text < /tmp/multi_vars.txt
echo ""
echo "$text"
echo ""
echo "Start of placing substrings into variables..."
echo ""
var_array=($text)
n=0
while true
do
	if [ $n -ge ${#var_array[@]} ]
	then
		break
	fi
	subtext="${var_array[$n]}"
	if [ "${subtext:0:4}" == "NAME" ]
	then
		name=${var_array[0]}
	fi
	if [ "${subtext:0:3}" == "DOB" ]
	then
		dob=${var_array[1]}
	fi
	if [ "${subtext:0:7}" == "ADDRESS" ]
	then
		address=$address${var_array[2]}
		for m in $( seq 3 1 $[ ( ${#var_array[@]} - 2 ) ] )
		do
			address=$address"${var_array[$m]}. "
		done
	fi
	number=${var_array[$n]}
	n=$[ ( $n + 1 ) ]
done
echo "$name"
echo "$dob"
echo "$address"
echo "$number"
echo ""
echo "DONE!"
echo ""
IFS="$ifs_str"
exit 0

Results:-
Code:
Last login: Sun Mar  2 22:39:26 on ttys000
AMIGA:barrywalker~> ./multi_vars.sh

NAME=SAM
DOB=01/01/1980
ADDRESS=
7658 James Street
NewYork
0000

Start of placing substrings into variables...

NAME=SAM
DOB=01/01/1980
ADDRESS=7658 James Street. NewYork. 
0000

DONE!

AMIGA:barrywalker~> _

HTH, goodnight folks...
# 6  
Old 03-02-2014
Please show us how your records are stacked. Does the next details start with NAME again or is it something else?

--ahamed
# 7  
Old 03-02-2014
Hi Wise,

I am very thankful for the solution. I was able to tweak accordingly for my requirement.

I appreciate your extended help in weekend also.

Ahmed

My Actual Response file are having total 9 parameters.

8 parameters have only single Value.

9th Parameter (Above example I took Address) will have multiple lines (Varies from time to time)

I was able to understand what Wise gave and tweaked as per my requirements.

Thanks a lot for asking
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Problem reading terminal response string from Zsh

Note: This posting is related to my posting at bash - Reading answer to control string sent to xterm - Stack Overflow , but I could get there a solution only for bash. I can use that solution, but for curiosity, I wonder, whether I could do this in Zsh as well. The problem is to send a (Posix-)... (6 Replies)
Discussion started by: rovf
6 Replies

2. UNIX for Dummies Questions & Answers

[Solved] Reading Array And Send An Email

I am trying to find an example for reading an array instead of reading a file and send out an email in ksh. Can you please help is that possible? Algorithm #!/bin/ksh i=0 set -A ARR if then let i=$ ARR="A does n't match with B" fi if then let i=$ ARR="P does n't match with Q"... (11 Replies)
Discussion started by: Ariean
11 Replies

3. Programming

[Solved] Problem with fork() while reading files

Good evening everyone. I have my finals and I'm facing a problem: I have a for cycle that is supposed to fork 2 children but somehow it forks only the first one. What am I doing wrong ? #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h>... (5 Replies)
Discussion started by: pfpietro
5 Replies

4. Shell Programming and Scripting

[Solved] Reading the last word in a file from a script

Hello everybody, My first time here and my english is not very good I hope you understand me. I'm trying to read a file that contains two zip archive names. Here my file content is: package1.zip package2.zip At the end of the line there is a \n character. I read this file from a... (2 Replies)
Discussion started by: Aurea
2 Replies

5. Shell Programming and Scripting

[Solved] delete line from file1 by reading from file2

Hi All, I have to arrange one of the text file by deleting specific lines. cat file1.txt 3595 3595 -0.00842773 -0.0085077 0.00368851 12815 12815 -0.00929239 0.00439785 0.0291697 3747 3747 -0.00974353 0.00228922 0.0225058 3574 3574 -0.00711399 -0.00315748 0.0141206 .... 12734... (7 Replies)
Discussion started by: senayasma
7 Replies

6. Shell Programming and Scripting

[solved] merging two files and writing to another file- solved

i have two files as file1: 1 2 3 file2: a b c and the output should be: file3: 1~a 2~b 3~c (1 Reply)
Discussion started by: mlpathir
1 Replies

7. Shell Programming and Scripting

SOLVED: reading config file in a perl script

Hi! I have a need to do this in Perl. script.pl -config file The script would be doing a wget/LWP on a URL which is defined in the config file. So when I run the script it should return either one of these conditions - 1) OK with exit status 0. Should also print "wget URL" 2)... (6 Replies)
Discussion started by: jacki
6 Replies

8. Shell Programming and Scripting

[Solved] Problem in reading a file line by line till it reaches a white line

So, I want to read line-by-line a text file with unknown number of files.... So: a=1 b=1 while ; do b=`sed -n '$ap' test` a=`expr $a + 1` $here do something with b etc done the problem is that sed does not seem to recognise the $a, even when trying sed -n ' $a p' So, I cannot read... (3 Replies)
Discussion started by: hakermania
3 Replies

9. UNIX for Advanced & Expert Users

ssh error: Error reading response length from authentication socket

Hi - I am getting the error `Error reading response length from authentication socket' when I ssh from my cluster to another cluster, and then back to my cluster. It doesn't seem to affect anything, but it's just annoying that it always pops up and tends to confuse new users of the cluster. I... (1 Reply)
Discussion started by: cpp6f
1 Replies

10. Shell Programming and Scripting

Reading response from server

I am trying to write a korn shell script which posts commands to a server and read the response back from the server. Any idea how I can read the servers response? I have tried doing the following: ( LOGIN:xxxxx command to server read ANSWER echo $ANSWER >file1... (4 Replies)
Discussion started by: frustrated1
4 Replies
Login or Register to Ask a Question