string parser


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting string parser
# 1  
Old 08-27-2006
string parser

I am new to scripting

I want to parse a string in a loop
eg A:B:CSmilie
E:F:G:H
and put them in different variable
attr1 = A
attr2 = B
attr3 = C
attr4 = D
.
.
/* do processing with attr1, attr2, attr3 and attr4 */

then go to next line E:F:G:H and again assign attr1/attr2/attr3/attr4 with E,F,G and H

Strings I am reding from file line by line. In a line, string can be of any size
for example
A:B:CSmilie
E:F:G:H
I:J:K:L:M:N

Could you please guide how should be my bash shell script

Last edited by flextronics; 08-27-2006 at 07:01 AM..
# 2  
Old 08-27-2006
I think you need something like this:
Code:
#! /bin/ksh
while read line; do
attr1=`echo $line | cut -d: -f1`
attr2=`echo $line | cut -d: -f2`
attr3=`echo $line | cut -d: -f3`
attr4=`echo $line | cut -d: -f4`
echo $attr1 $attr2 $attr3 $attr4
done < inputfile

# 3  
Old 08-27-2006
string parser

It seems you have assumed all lines have 4 words seperated by :
but there may be less than 4 or more than 4.

Then how to traverse in particular line till new line character.

Your help will be greatly appreciated
# 4  
Old 08-27-2006
Try this:
Code:
#! /bin/ksh

while read line; do
count=`echo $line | awk -F: '{print NF}'`
i=1
        while ((i <= $count));
        do
                attr${i}=`echo $line | cut -d: -f${i}`
                (( i = i + 1));
        done
done < inputfile

# 5  
Old 08-27-2006
string parser

While executing following program it is giving follwong error

./s-g-table.sh: line 8: attr1=fdxE1ConfigAdminStatus: command not found
./s-g-table.sh: line 8: attr2=i: command not found
./s-g-table.sh: line 8: attr3=1: command not found
./s-g-table.sh: line 8: attr4=2: command not found

./s-g-table.sh: line 8: attr1=fdxE1LineType: command not found
./s-g-table.sh: line 8: attr2=i: command not found
./s-g-table.sh: line 8: attr3=1: command not found
./s-g-table.sh: line 8: attr4=2: command not found
./s-g-table.sh: line 8: attr5=3: command not found

The first and second line of file are as follows
fdxE1ConfigAdminStatus:i:1:2
fdxE1LineType:i:1:2:3

1 #! /bin/ksh
2
3 while read line; do
4 count=`echo $line | awk -F: '{print NF}'`
5 i=1
6 while ((i <= $count));
7 do
8 attr${i}=`echo $line | cut -d: -f${i}`
10 (( i = i + 1));
11 done
12done < inputfile

Could you help me to find out where is the problem

Thanks in advance
# 6  
Old 08-27-2006
why not use awk + arrays

Code:
awk -F: '{ for(i=1;i<=NF;i++){ a[i]=$i; } }' input_file_name

The array values can be referred after the for loop. Any processing could be done here.
# 7  
Old 08-28-2006
Raj's solution is simple, try that. About ksh code, I don't get any error, If you dont want to use awk then post here which shell you are using and at which platform you are, I guess you are at Linux, maybe some shell experts here could help you better about the error.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Making a parser

input 1..100km 112..403km 500..623km required output 1..51 112..162 500..550 (i.e 50kms added to the initial distance) (2 Replies)
Discussion started by: ANKIT ROY
2 Replies

2. Shell Programming and Scripting

Parser

Hi All, I am trying to create a parser to find out what cobol programs are being called by which JCL's. I need to search recursively until the main cobol program is found being called by a JCL. I tried to create a script but I am not able to generalize it. Can someone please help. ... (1 Reply)
Discussion started by: nua7
1 Replies

3. Shell Programming and Scripting

SQL Parser

Hi, I have been assigned a task to migrate few thousands of sql scripts to a different db format. there could be sub queries and complex joins. there would be functions that needs to be replaced from a given list to another values. this should also parse the sub\inline queries. Can you please... (1 Reply)
Discussion started by: hitmansilentass
1 Replies

4. Shell Programming and Scripting

File Parser

Hi need help parsing a file. I have tag fields and values in a file with delimiter |. sample records from the file listed below 8=value|9=value|35=value|49=value|56=value|34=value|50=value|48=value|10=value 8=value|9=value|35=value|49=value|56=value|34=value|51=value|48=value|10=value... (2 Replies)
Discussion started by: subramanian
2 Replies

5. Programming

Parser

Hi Everyone I have an out put of multiple lines which I would like to parse and retrieve certain info from it. The output consists of multiple sections that starts with the line Client: and ends with STL tag: each section separated by an empty line. So basically somehting like Client: ... (10 Replies)
Discussion started by: bombcan1
10 Replies

6. Shell Programming and Scripting

Parser with sed

Hi, I have this variable: <a href="http://www.rtve.es/mediateca/videos/20100916/video-calamares-rellenos-salsa-pimientos-garbanzos-16-09-10/878586.shtml">V�deo: Calamares rellenos con salsa de pimientos y ...</a> I would like to have: ... (7 Replies)
Discussion started by: mierdatuti
7 Replies

7. Shell Programming and Scripting

need a text parser

i need a simple text parser which can parse a data file created by a softwre so that i can export it to my mysqldb,, datafile created as one record per line with different number of fields. e.g datafile contains following. a=1, b=3, c=4 a=1, c=55, d=abcd a=5, b=hello, c=99, d=help now i... (12 Replies)
Discussion started by: sfaizan
12 Replies

8. Shell Programming and Scripting

Help with an (easy) parser

Hello, i'm workig with a file with structural information about biological macromolecules (proteins etc). In a certain file, the info is structured like this @<TRIPOS>MOLECULE blah 1 blah 2 blah 3 @<TRIPOS>MOLECULE foo 1 foo 2 foo 3 @<TRIPOS>MOLECULE mmm 1 mmm 2 mmm 3 I would... (7 Replies)
Discussion started by: aristegui
7 Replies

9. Shell Programming and Scripting

Text Parser

I am having a text file as follows say server.txt Date Time server ip error code -------------------------------------------------------------------------- 02/21/2008 18:10:14 server1 xxx.xxx.xxx.xxx 6 02/21/2008 08:10:14 server2 ... (8 Replies)
Discussion started by: karthikn7974
8 Replies

10. Programming

command line parser

hey peeps i need to allow a user to input a line and then my job is to separate that line into tokens and print out what each command is. my question here is, if eg: 'ls > aifle' is entered as the input line, you would separate it and get three tokens: token 1 would be 'ls', token 2 '>' and... (0 Replies)
Discussion started by: mile1982
0 Replies
Login or Register to Ask a Question