Visit Our UNIX and Linux User Community


Line Parsing using sed and awk


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Line Parsing using sed and awk
# 1  
Old 02-01-2010
Line Parsing using sed and awk

Hi Guys,

I need help with processing data in a file, line by line.

My file test.txt has

Code:
X_Building_X5946/X0 BUT/U_msp/RdBuMon_d2_B_00 BUT/U_msp/FfRmDaMix_d2_Pi3[28] Test_Long xp=849.416 yp=245.82 xn=849.488 yn=245.82 w=0.476 l=0.072 fault_layer="Al_T01_Mod" $[M1_BRI_TYPE1_P1] $X=849416 $Y=245582
X_Building_X5946/X1 BUT/U_msp/RdBuMon_d2_B_00 BUT/U_msp/FfRmDaMix_d2_Pi3[29] Test_Long xp=849.416 yp=247.86 xn=849.488 yn=247.86 w=0.476 l=0.072 fault_layer="Al_T01_Mod" $[M1_BRI_TYPE1_P1] $X=849416 $Y=247622
X_Building_X5946/X2 BUT/U_msp/RdBuMon_d2_B_00 BUT/U_msp/FfRmDaMix_d2_Pi3[30] Test_Long xp=849.416 yp=249.9 xn=849.488 yn=249.9 w=0.476 l=0.072 fault_layer="Al_T01_Mod" $[M1_BRI_TYPE1_P1] $X=849416 $Y=249662
X_Building_X5946/X3 BUT/U_msp/RdBuMon_d2_B_00 BUT/U_msp/FfRmDaMix_d2_Pi3[31] Test_Long xp=849.416 yp=251.94 xn=849.488 yn=251.94 w=0.476 l=0.072 fault_layer="Al_T03_Mod" $[M1_BRI_TYPE2_P1] $X=849416 $Y=251702
X_Building_X5946/X4 BUT/U_msp/RdFfData2Sr_d2_BUF_00 BUT/U_msp/FfRmDaMix_d2_Pi2[28] Test_Long xp=850.952 yp=245.82 xn=851.024 yn=245.82 w=0.476 l=0.072 fault_layer="Al_T02_Mod" $[M1_BRI_TYPE3_P1] $X=850952 $Y=245582



I need to process each line. i.e if you observe each line starts with X_Building_ and ends with $Y=number

I need my output to be

Code:
EGDIR "X_Building_X5946/X0.M1_BRI_TYPE1_P1" {
  NET1="/iDUT/BUT/U_msp/RdBuMon_d2_B_00";
  NET2="/iDUT/BUT/U_msp/FfRmDaMix_d2_Pi3 [28]";
  LENGTH=0.072;
  WIDTH=0.476;
  X_COORDINATE=849416;
  Y_COORDINATE=245582;
  LAYER="Al_T01_Mod";
}
EGDIR "X_Building_X5946/X1.M1_BRI_TYPE1_P1" {
  NET1="/iDUT/BUT/U_msp/RdBuMon_d2_B_00";
  NET2="/iDUT/BUT/U_msp/FfRmDaMix_d2_Pi3 [29]";
  LENGTH=0.072;
  WIDTH=0.476;
  X_COORDINATE=849416;
  Y_COORDINATE=247622;
  LAYER="Al_T01_Mod";
}
EGDIR "X_Building_X5946/X2.M1_BRI_TYPE1_P1" {
  NET1="/iDUT/BUT/U_msp/RdBuMon_d2_B_00";
  NET2="/iDUT/BUT/U_msp/FfRmDaMix_d2_Pi3 [30]";
  LENGTH=0.072;
  WIDTH=0.476;
  X_COORDINATE=849416;
  Y_COORDINATE=249662;
  LAYER="Al_T01_Mod";
}
EGDIR "X_Building_X5946/X3.M1_BRI_TYPE2_P1" {
  NET1="/iDUT/BUT/U_msp/RdBuMon_d2_B_00";
  NET2="/iDUT/BUT/U_msp/FfRmDaMix_d2_Pi3 [31]";
  LENGTH=0.072;
  WIDTH=0.476;
  X_COORDINATE=849416;
  Y_COORDINATE=251702;
  LAYER="Al_T03_Mod";
}
EGDIR "X_Building_X5946/X4.M1_BRI_TYPE3_P1" {
  NET1="/iDUT/BUT/U_msp/RdFfData2Sr_d2_BUF_00";
  NET2="/iDUT/BUT/U_msp/FfRmDaMix_d2_Pi2 [28]";
  LENGTH=0.072;
  WIDTH=0.476;
  X_COORDINATE=850952;
  Y_COORDINATE=245582;
  LAYER="Al_T02_Mod";
}



Thanking you all in Advance
# 2  
Old 02-01-2010
Code:
awk '   /^X_Building_/ && /Y=[0-9]* *$/ {
print "EGDIR " qt $1".M1_BRI_TYPE1_P1" qt " {"
print "  NET1=" qt "/iDUT/"$2 qt ";"
print "  NET2=" qt "/iDUT/"$3 qt ";"
sub("l=","",$10);print "  LENGTH="$10 ";"
sub("w=","",$9);print "  WIDTH="$9 ";"
sub("\\$X=","",$(NF-1));print "  X_COORDINATE="$(NF-1) ";"
sub("\\$Y=","",$NF);print "  Y_COORDINATE="$NF  ";"
sub("fault_layer=","",$11);print "  LAYER=" $11 ";" } ' qt=\" file

# 3  
Old 02-01-2010
Hi Anbu23,
Thanks a lot for the help.... I however noticed that in the line

Code:
print "EGDIR " qt $1".M1_BRI_TYPE1_P1" qt " {"


the value M1_BRI_TYPE1_P1 is a variable and changes every now and then. For eg in line 4 and 5 of Initial File. So I guess we need to strip off the $[ ] from column 12? How can that be done??

Thanks again,
Naveen

Previous Thread | Next Thread
Test Your Knowledge in Computers #33
Difficulty: Easy
In HTTPS, the letter 'S' stands for 'safe'.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

Interesting awk/Perl/sed parsing challenge

I have a log with entries like: out/target/product/imx53_smd/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/bindings/V8HTMLVideoElement.cpp : target thumb C++: libwebcore <=... (8 Replies)
Discussion started by: glev2005
8 Replies

2. Shell Programming and Scripting

awk/sed line parsing

I'm new to shell programming, but I think I learn best by following an example. I'm trying to cook up an awk/sed script, but I obviously lack the required syntax skills to achieve it. The output that I get from running my ksh script looks like this: I need to search each numbered line for... (10 Replies)
Discussion started by: iskatel
10 Replies

3. UNIX for Advanced & Expert Users

Parsing through a file with awk/sed

I don't necessary have a problem, as I have a solution. It is just that there may be a better solution. GOAL: Part one: Parse data from a file using the "\" as a delimiter and extracting only the last delimiter. Part two: Parse same file and extract everything but the last delimited item. ... (8 Replies)
Discussion started by: OrangeYaGlad
8 Replies

4. Shell Programming and Scripting

Parsing with awk or sed

I want to delete corrupt records from a file through awk or sed. Can anyone help me with this Thanks Striker Change subject to a descriptive one, ty. (1 Reply)
Discussion started by: Rahul_us
1 Replies

5. Shell Programming and Scripting

Another parsing line awk or sed problem

Hi, After looking on different forums, I'm still in trouble to parse a parameters line received in KSH. $* is equal to "/AAA:111 /BBB:222 /CCC:333 /DDD:444" I would like to parse it and be able to access anyone from his name in my KSH after. like echo myArray => display 111 ... (1 Reply)
Discussion started by: RickTrader
1 Replies

6. Shell Programming and Scripting

String parsing with awk/sed/?

If I have a string that has some name followed by an ID#(ex.B123456) followed by some more #'s and/or letters, would it be possible to just grab the ID portion of this string? If so how? I am pretty new with these text tools so any help is appreciated. Example: "Name_One-B123456A-12348A" (2 Replies)
Discussion started by: airon23bball
2 Replies

7. Shell Programming and Scripting

awk/sed for parsing file

Hi All, I have a log file like this E Mon Oct 06 00:17:08 2008 xxx2 cm:10614 fm_pi2_svc_iptv_purchase.c:149 1:pin_deferred_act:10601:11:169:1223245028:16 pi2_op_svc_iptv_purchase error <location=PIN_ERRLOC_FM:5 class=PIN_ERRCLASS_SYSTEM_DETERMINATE:1... (10 Replies)
Discussion started by: subin_bala
10 Replies

8. Shell Programming and Scripting

Parsing a file (sed/awk?)

Hello people, newbie question. I'm trying to parse these type of file 1 "CAR " " C1 " " " 6 0 C1 2 "CAR " " O1A" " " 8 0 O1A 3 "CAR " " O1B" " " 8 -1 O1B 4 "CAR " " C2 " " " 6 0 C2 5 "CAR " " C3 " " " 6 ... (10 Replies)
Discussion started by: aristegui
10 Replies

9. Shell Programming and Scripting

parsing xml with awk/sed

Hi people!, I need extract from the file (test-file.txt) the values between <context> and </context> tag's , the total are 7 lines,but i can only get 5 or 2 lines!!:confused: Please look my code: #awk '/context/{flag=1} /\/context/{flag=0} !/context/{ if (flag==1) p rint $0; }'... (3 Replies)
Discussion started by: ricgamch
3 Replies

10. Shell Programming and Scripting

awk sed parsing

hi , i would like to parse some file with the fallowing data : data data data "unwanted data" data data "unwanted data" data data data data #unwanted data. what i want it to have any coments between "" and after # to be erased using awk or/and sed. has anyone an idea? thanks. (3 Replies)
Discussion started by: Darsh
3 Replies

Featured Tech Videos