While read line query !!!


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting While read line query !!!
# 1  
Old 08-06-2012
Computer While read line query !!!

Folks,

I am working on a file which has entries as follows. I am using while read line to generate desired output as follows.


filename1:
Code:
Name  : sdt2156157_ID
       NOS : 4567 [ sdt2156157/67 ]
       NOS : 2348 [ sdt2156157/48 ]  
Name  : sdt2156158_ID
       NOS : 4987 [ sdt2156158/87 ]
       NOS : 2332 [ sdt2156158/32 ]


Code:
while read line
do
nos=$(echo $line|grep NOS|awk '{print $3}')
name=$(echo $line|awk '{ if ($1 == "Name") print $5}')

echo $name
echo "INSERT -name $name -nos $nos to chart ABC;"

done < filename1


However I get following o/p.
Code:
sdt2156157_ID
INSERT -name mdt2156157_ig -nos to chart ABC;

INSERT -name -nos 4567 to chart ABC;

INSERT -name -nos 2348  to chart ABC;

Desired O/P is as follows.

Code:
sdt2156157_ID
INSERT -name mdt2156157_ig -nos 4567 to chart ABC;
INSERT -name mdt2156157_ig -nos 2348  to chart ABC;

Please guide me how can I save value from earlier line.

Last edited by zaxxon; 08-06-2012 at 04:29 PM.. Reason: more code tags
# 2  
Old 08-06-2012
Here are two solution, using pure ksh/bash or awk, not mixed.
Code:
#!/usr/bin/someposixshell ksh, bash, dash, ...

# make tmp file for input
cat <<EOF > $0.tmp
Name : sdt2156157_ID
NOS : 4567 [ sdt2156157/67 ]
NOS : 2348 [ sdt2156157/48 ]
Name : sdt2156158_ID
NOS : 4987 [ sdt2156158/87 ]
NOS : 2332 [ sdt2156158/32 ]
EOF

# ver 1 using shell
# set fld delimiter
IFS="${IFS}:]["
name=""
action="INSERT"
while read key id value x
do
        case "$key" in
                Name) name="$id" ; echo $name ; action="INSERT" ;;
                NOS) echo "$action -name $name -nos $id to chart ABC;"  ; action="APPEND";;
        esac
done < $0.tmp

Code:
# ver 2 using awk
awk  '
$1 == "Name" { name=$3 ; print name ; action="INSERT";  next }
$1 == "NOS" {
        print action," -name ",name," -nos",$3," to chart ABC;"
        action="APPEND"
        }
' $0.tmp

rm -f $0.tmp 2>/dev/null


Last edited by kshji; 08-07-2012 at 02:56 AM..
This User Gave Thanks to kshji For This Post:
# 3  
Old 08-06-2012
Wonderful !!! Thank you kshji. Appreciate your prompt response.

---------- Post updated at 02:26 PM ---------- Previous update was at 12:51 PM ----------

Actually I should have mentioned following O/P. Note APPEND in place of insert everyline after First in one Name record. Any help would be appreciated.

Code:
sdt2156157_ID
INSERT -name mdt2156157_ig -nos 4567 to chart ABC;
APPEND -name mdt2156157_ig -nos 2348 to chart ABC;


Last edited by zaxxon; 08-06-2012 at 04:29 PM.. Reason: code tags
# 4  
Old 08-07-2012
I updated my solution.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Read: no query process ERROR

Hi, With root user i set this in the .bashrc of user1 on machine 1 more .bashrc ./track.sh # .bashrc # Source global definitions if ; then . /etc/bashrc fi Content of track.sh are more track.sh read -p "Enter ID:" reason while ] # While string is different or empty...... (4 Replies)
Discussion started by: mohtashims
4 Replies

2. Shell Programming and Scripting

Read input file and used it to SQL query

Hi All, Seeking for your assistance to read each line $1 and $2 of input file and used it to query. Ex. file1.txt(number range) 9064500000 9064599999 9064600000 9064699999 9064700000 9064799999 Database name: ranges_log a_no message 9064500001 test 9064700000 ... (7 Replies)
Discussion started by: znesotomayor
7 Replies

3. Shell Programming and Scripting

How to read file line by line and compare subset of 1st line with 2nd?

Hi all, I have a log file say Test.log that gets updated continuously and it has data in pipe separated format. A sample log file would look like: <date1>|<data1>|<url1>|<result1> <date2>|<data2>|<url2>|<result2> <date3>|<data3>|<url3>|<result3> <date4>|<data4>|<url4>|<result4> What I... (3 Replies)
Discussion started by: pat_pramod
3 Replies

4. Shell Programming and Scripting

Need a program that read a file line by line and prints out lines 1, 2 & 3 after an empty line...

Hello, I need a program that read a file line by line and prints out lines 1, 2 & 3 after an empty line... An example of entries in the file would be: SRVXPAPI001 ERRO JUN24 07:28:34 1775 REASON= 0000, PROCID= #E506 #1065: TPCIPPR, INDEX= 003F ... (8 Replies)
Discussion started by: Ferocci
8 Replies

5. Shell Programming and Scripting

How do I read sql query into shell script?

Hello All, I'm trying to put together a shell script that will: 1. connect to an oracle database 2. execute a query 3. save the output to a csv file I know that I can execute the sqlplus -s user/pass @dbsid and get logged in. What I would like to do is have my query in a separate text... (9 Replies)
Discussion started by: bbbngowc
9 Replies

6. Shell Programming and Scripting

How to read query string from shell script?

Hi, I am new this shell scripting. I have one html page which is executing shell script. That web form is passing some query strings to the script. Now how can I read query string in shell script and parse it in variables. I tried with below shell script but its not working. #!/bin/sh ... (6 Replies)
Discussion started by: jdp
6 Replies

7. Shell Programming and Scripting

how to read the contents of two files line by line and compare the line by line?

Hi All, I'm trying to figure out which are the trusted-ips and which are not using a script file.. I have a file named 'ip-list.txt' which contains some ip addresses and another file named 'trusted-ip-list.txt' which also contains some ip addresses. I want to read a line from... (4 Replies)
Discussion started by: mjavalkar
4 Replies

8. Shell Programming and Scripting

Read value from user and use it in Oracle SQL query

Guys can anyone just tell me whether i can pass a value(from UNIX SCRIPT) as an ARGUMENT in Oracle Query? e.g. echo "enter value" read value insert into tablename where col=$value /*something like this*/ (1 Reply)
Discussion started by: subodh.thakar
1 Replies

9. Shell Programming and Scripting

bash: read file line by line (lines have '\0') - not full line has read???

I am using the while-loop to read a file. The file has lines with null-terminated strings (words, actually.) What I have by that reading - just a first word up to '\0'! I need to have whole string up to 'new line' - (LF, 10#10, 16#A) What I am doing wrong? #make file 'grb' with... (6 Replies)
Discussion started by: alex_5161
6 Replies

10. UNIX for Dummies Questions & Answers

query on how to search for a line and read 4th word from that line

Assume I have a text file as below: me con pi ind ken pras ur me con rome ind kent pras urs pintu con mys ind pan pras ki con kit ind sys My requirement, I need to search for "con rome" and if exists, then print 4th word from rome, i.e in above example, since "con rome"... (4 Replies)
Discussion started by: jaggesh
4 Replies
Login or Register to Ask a Question