Text parsing


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Text parsing
# 1  
Old 08-05-2014
Text parsing

Hi All!

Is it possible to convert text file:

Quote:
@1 line:Any text aaa
@2 line:tag1, tag2
@3 line:Any text bbb
@1 line:Any text ccc
@2 line:tag3, tag4
@3 line:Any text ddd
to:

Quote:
@1 line:Any text aaa
@2 line: <XO>tag1<XC,"tag1","","","",0,0,"">, <XO>tag2<XC,"tag2","","","",0,0,"">
@3 line:Any text bbb
@1 line:Any text ccc
@2 line: <XO>tag3<XC,"tag3","","","",0,0,"">, <XO>tag4<XC,"tag4","","","",0,0,"">
@3 line:Any text ddd
?
# 2  
Old 08-05-2014
Code:
 awk -F"[:,]" '{if ($1~/@2 line/){print $1": <XO>"$2"<XC,\""$2"\",\"\",\"\",\"\",0,0,\"\">,<XO>"$3"\",\"\",\"\",\"\",0,0,\"\">"}else{print $0}}' file

This User Gave Thanks to protocomm For This Post:
# 3  
Old 08-05-2014
I don't understand anything, but... it works! Smilie)

Is it possilble to save the output to a file?

---------- Post updated at 07:04 AM ---------- Previous update was at 07:04 AM ----------

ps. THANKS!
# 4  
Old 08-05-2014
at the end of command you add

Code:
command awk file > fileToSave

This User Gave Thanks to protocomm For This Post:
# 5  
Old 08-05-2014
Great! You saved a few days of my job! I will check it on a very large file.
# 6  
Old 08-05-2014
Code:
akshay@nio:/tmp$ cat file
@1 line:Any text aaa
@2 line:tag1, tag2
@3 line:Any text bbb
@1 line:Any text ccc
@2 line:tag3, tag4
@3 line:Any text ddd

Code:
akshay@nio:/tmp$ awk '{print ( /@2 line/ ) ? $1":"sprintf(fmt,$2,$2) OFS sprintf(fmt,$3,$3) : $0}' FS='[:, ]' OFS=',' fmt='<XO>%s<XC,"%s","","","",0,0,"">' file

Code:
@1 line:Any text aaa
@2:<XO>line<XC,"line","","","",0,0,"">,<XO>tag1<XC,"tag1","","","",0,0,"">
@3 line:Any text bbb
@1 line:Any text ccc
@2:<XO>line<XC,"line","","","",0,0,"">,<XO>tag3<XC,"tag3","","","",0,0,"">
@3 line:Any text ddd

# 7  
Old 08-05-2014
Quote:
Originally Posted by protocomm
Code:
 awk -F"[:,]" '{if ($1~/@2 line/){print $1": <XO>"$2"<XC,\""$2"\",\"\",\"\",\"\",0,0,\"\">,<XO>"$3"\",\"\",\"\",\"\",0,0,\"\">"}else{print $0}}' file

Hello,

May I explain this one?

Code:
awk -F"[:,]" '{if ($1~/@2 line/){print $1": <XO>"$2"<XC,\""$2"\",\"\",\"\",\"\",0,0,\"\">,<XO>"$3"\",\"\",\"\",\"\",0,0,\"\">"}else{print $0}}' file

-F is the option used to set the field separator, that can be a character or a regular expression. This time is a regular expression that's why it is between brackets.

[:,] is the regular expression that means that the separator would be either : or ,

So awk understands each separator for a field like this:

Code:
@1 line:Any text aaa
@2 line:tag1, tag2

For example, printing the first field,

Code:
awk -F[:,] '{print $1}' file
@1 line
@2 line
@3 line
@1 line
@2 line
@3 line


Printing the second field,

Code:
awk -F[:,] '{print $2}' file
Any text aaa
tag1
Any text bbb
Any text ccc
tag3
Any text ddd

Now we have the chunks of code so we can work with them to achieve what we want,

Code:
if ($1~/@2 line/)
{
print $1": <XO>"$2"<XC,\""$2"\",\"\",\"\",\"\",0,0,\"\">,<XO>"$3"\",\"\",\"\",\"\",0,0,\"\">"
}
else
{
print $0
}

with this condition we find if the first field matches the string between / /

Code:
$1~/@2 line/



print $0 means printing the whole line.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Parsing blocked text

I do have a flat text file that are divided into blocks. Each block is demimited by '='. I would like to parse certain numbers and letters. This is the format of the file I have. It has thousands of such blocks >A B 1, 100 TTTT 100 95 >C D 1, 95 GHJKL = >A B 1, 72 GHUJKLO 72 84 >C D... (3 Replies)
Discussion started by: Kanja
3 Replies

2. Shell Programming and Scripting

Parsing text file

Hi Friends, I am back for the second round today - :D My input text file is this way Home friends friendship meter Tools Mirrors Downloads My Data About Us Help My own results BLAT Search Results ACTIONS QUERY SCORE START END QSIZE IDENTITY CHRO STRAND ... (7 Replies)
Discussion started by: jacobs.smith
7 Replies

3. Shell Programming and Scripting

Parsing text file

I'm totally stumped with how to handle this huge text file I'm trying to deal with. I really need some help! Here is what is looks like: ab1ba67c331a3d731396322fad8dd71a3b627f89359827697645c806091c40b9 0.2 812a3c3684310045f1cb3157bf5eebc4379804e98c82b56f3944564e7bf5dab5 0.6 0.6... (3 Replies)
Discussion started by: comp8765
3 Replies

4. Programming

Parsing a Text file using C++

I was trying to parse the text file, which will looks like this ###XYZABC#### ############ int = 4 char = 1 float = 1 . . ############ like this my text file will contains lots of entries and I need to store these entries in the map eg. map.first = int and map.second = 4 same way I... (5 Replies)
Discussion started by: agupta2
5 Replies

5. Shell Programming and Scripting

Help with text/number parsing

Hello I have a file that contains 10 rows as below: "ID" "DP" "ID=GRMZM2G015073_T01" "23.6044288292005" "ID=GRMZM2G119852_T01" "59.7782287606723" "ID=GRMZM2G100242_T02" "61.4167813736184" "ID=GRMZM2G046274_T01" "6.63061838134219" "ID=GRMZM2G046274_T02" ... (5 Replies)
Discussion started by: cs_novice
5 Replies

6. Shell Programming and Scripting

Need help parsing a text file

I have a text file: router1#sh ip blah blah | incl --- Gi2/8 10.60.4.181 --- 10.60.123.175 11 0000 0000 355K Gi2/8 10.60.83.28 --- 224.10.10.26 11 F9FF 3840 154K Gi2/8 10.60.83.198 --- ... (1 Reply)
Discussion started by: streetfighter2
1 Replies

7. Shell Programming and Scripting

Parsing text

Hello all, I have some text formatted as follows Name: John doe Company: Address 1: 7 times the headache Address 2: City: my city State/Province: confusion Zip/Postalcode: 12345 and I'm trying to figure out how I could extract the data after the colon so that the result would be ... (6 Replies)
Discussion started by: mcgrailm
6 Replies

8. Shell Programming and Scripting

Parsing text from file

Any ideas? 1)loop through text file 2)extract everything between SOL and EOL 3)output files, for example: 123.txt and 124.txt for the file below So far I have: sed -n "/SOL/,/EOL/{p;/EOL/q;}" file Here is an example of my text file. SOL-123.go something goes here something goes... (0 Replies)
Discussion started by: ndnkyd
0 Replies

9. Shell Programming and Scripting

Text File Parsing

Hey Guys.I am a newbie on Bash Shell Scripting and Perl.And I have a question about file parsing. I have a log file which contains reports about a communication device.I need to take some of the reports from the log file.Its hard to explain the issue.but shortly I can say that, the reports has a... (2 Replies)
Discussion started by: Djlethal
2 Replies

10. UNIX for Dummies Questions & Answers

Text parsing question

How would I split a file based on the location of a string, basically I want all entries above the string unix in this example 1 2 3 4 unix 5 6 7 Thanks, Chuck (3 Replies)
Discussion started by: 98_1LE
3 Replies
Login or Register to Ask a Question