Read record from the text file contain multiple separated values & assign those values to variables


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Read record from the text file contain multiple separated values & assign those values to variables
# 1  
Old 02-24-2014
Read record from the text file contain multiple separated values & assign those values to variables

I have a file containing multiple values, some of them are pipe separated which are to be read as separate values and some of them are single value all are these need to store in variables.
I need to read this file which is an input to my script

Config.txt
Code:
file name, first path, second path(pipe separated)
file name, first path, second path(pipe separated)
username
ip
path
path
:
:

Code:
USER_NAME|home/files/proc/out/user_name|home/files/done/in/user_name/tmp/
USER_lang|home/files/proc/out/user_lang/home/files/done/in/user_name/tmp/
sys_adm
11.100.120.110

Now I want to read all these values define in file , but while matching in script, when we get lines having “file name, first path, second path” then comparison must be done with ‘file name' and actual file name and its neighbouring values(first path, second path) need to be store in variable else for other values(username ,ip,...) skip the matching and only store them in variable for further used.
Please suggest me how to implement this.....
# 2  
Old 02-24-2014
What have you tried so far?
# 3  
Old 02-24-2014
Hi chacko193,

Currently I have this….
Code:
            flag=0
                    while IFS='|' read -r line f_path p_path; do
               set -f          # disable globbing
#               echo $line
                   if [[ $CHK_FILE =~ "${line}*" ]] ;# True if file name is equal to line* (literal matching).
                                            then
                                                    flag=1
                                                    break
                                                    else
                                                    flag=0
                                                    fi
                    done < config .txt
                    if [ $flag = 1 ]
                                    then
do this
                                    else
                                            do this
                    fi

In this case I able to make file name comparison but can’t stop to avoid when line contain username ,ip,… also I am planning to put all vales in variable for future understanding

Code:
 fle1=”USER_NAME|home/files/proc/out/user_name|home/files/done/in/user_name/tmp/”
]file2=”USER_lang|home/files/proc/out/user_lang/home/files/done/in/user_name/tmp/”
unmae=”sys_adm”
ip=”11.100.120.110”

Or any improved suggestion…?
Moderator's Comments:
Mod Comment Please do not add FONT and SIZE tags to every line in your postings (especially inside CODE tags). The constant width font used by CODE tags makes spacing and text clear in code segments, sample input, and sample output. Overriding the CODE tag font and reducing the size of the text makes it harder to interpret these key elements of any issues you may have.

Last edited by Don Cragun; 02-24-2014 at 04:50 AM.. Reason: Removed dozens of FONT and SIZE tags.
# 4  
Old 02-24-2014
You may want to read every single line and after that use a case statement (e.g. on the first variable read) to check what type of line you're dealing with.
# 5  
Old 02-24-2014
Perhaps something like this will get you started:

Code:
T=0
while IFS='|' read -r line f_path p_path
do
    if [ -n "$f_path" ]
    then
       file_name[${#file_name[@]}]=$line
       first_path[${#first_path[@]}]=$f_path
       second_path[${#second_path[@]}]=$p_path
       continue
    fi
    let T=T+1
    case $T in
       1) username=$line ;;
       2) ip=$line ;;
       *) path=$line ;;
    esac
done < config.txt

i=1
while [ $i -le ${#file_name[@]} ]
do
    echo "file$i=\"${file_name[i-1]}|${first_path[i-1]}|${second_path[i-1]}\""
    let i=i+1
done
echo unmae=\"$username\"
echo ip=\"$ip\"

Here we put the filename and 1st and 2nd paths into 3 arrays. username ip and other variables are assigned based on the line number following the filename data.

I've included a block of code to fetch back and print the input to show how you would access it within your script.
This User Gave Thanks to Chubler_XL For This Post:
# 6  
Old 02-27-2014
Thank you so much ....it is exactly what i am looking for....
# 7  
Old 03-06-2014
hi chubler,

I am not god with arrays so could you please explain me how
Code:
${#file_name[@]}]

works??

Regards,
Ketanr
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Assign comma separated values to a variable

Hi All, I wrote a database command that queries our application and outputs a whole bunch of values to a text file. I need to assign the output to two values. Here is a sample of the output: valueOne, checkOne valueTwo, checkTwo valueThree, checkThree I would like... (9 Replies)
Discussion started by: jeffs42885
9 Replies

2. UNIX for Dummies Questions & Answers

Read in Multiple log files and output selected variables and values to cvs file

I have several problems with my problems: I hope you can help me. 1) the If else statement I am getting an error message. My syntax must be incorrect because the entire statement is throwing an error. For example in filew.log if these items don't exist Memsize, SASFoundation and also if... (0 Replies)
Discussion started by: dellanicholson
0 Replies

3. Shell Programming and Scripting

Unable to read assign values to two variables in while loop

I am trying to read a input file which has two columns separated by space Input file server1 server2 server3 server4 server5 server6 When i execute the below while code it reads line by line and a and b variables are able to successfully fetch the values while read a b do echo "$a" echo... (5 Replies)
Discussion started by: chidori
5 Replies

4. Shell Programming and Scripting

Read record from the text file & assign those values to variables in the script

For eg: I have sample.txt file with 4 rows of record like: user1|password1 user2|password2 user3|password3 user4|password4 The username and password is sepsrated by '|' I want to get the 1st row value from the file and assign it to two different variables(username and password) in my... (1 Reply)
Discussion started by: priya001
1 Replies

5. Shell Programming and Scripting

Read variables names from array and assign the values

Hi, I have requirement to assign values to variables which are created dynamically. Below is the code which i am using to achieve above requirement. #!/bin/ksh oIFS="$IFS"; IFS=',' STR_FAIL_PARENT_IF_FAILS="WF_F_P_IF_FAILS1,WF_F_P_IF_FAILS2,WF_F_P_IF_FAILS3" set -A... (1 Reply)
Discussion started by: tmalik79
1 Replies

6. UNIX for Advanced & Expert Users

How to read a text file and assign the values in the same to a variable in loop

Hi, I have a text file with multiple lines, each having data in the below format <DOB>,<ADDRESS> I have to write a script which reads each line in the text file in loop, assign the values to these variables and do some further processing in it. Using the following code prints the values... (12 Replies)
Discussion started by: manishab00
12 Replies

7. Fedora

How to read a text file and assign the values in the same to a variable in loop

Hi, I have a text file with multiple lines, each having data in the below format <DOB>,<ADDRESS> I have to write a script which reads each line in the text file in loop, assign the values to these variables and do some further processing in it. Using the following code prints the... (1 Reply)
Discussion started by: manishab00
1 Replies

8. Shell Programming and Scripting

Assign values to variables of a file

Hi, I have a file like the following... CUST= DIR= NULIST= name=philps_123 How can i add values to each of these unassigned variables using a shell script? say for eg: i have values for CUST as onida, dir as /dir/onida, NULIST as /tmp/onida_files. How can i add these values to... (11 Replies)
Discussion started by: Tuxidow
11 Replies

9. Shell Programming and Scripting

Assign Values to variables from a text file

The text file has one single row and looks like this Q1 P1 2006 I have to pick up this values from a shell script into three different variables, say quarter, period and year from the above text file. Some one know's how to do this? I went through 'sed', dint really know how to... (3 Replies)
Discussion started by: sarsani
3 Replies

10. Shell Programming and Scripting

how can i read text file and assign its values to variables using shell

Hello, I have a cat.dat file, i would like shell to read each 3 lines and set this 3 lines to 3 different variables. my cat.dat is: 11 12 +380486461001 12 13 +380486461002 13 14 +380486461003 i want shell to make a loop and assign 1st line to student_id, 2nd line to... (4 Replies)
Discussion started by: rosalinda
4 Replies
Login or Register to Ask a Question