Script awk vertical to horizontal with some condition


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Script awk vertical to horizontal with some condition
# 1  
Old 08-26-2013
Script awk vertical to horizontal with some condition

hi all..

i have problem, right now i want to processing some data with input like this
Code:
           BIMAB     ACF-0168  QTS-0465    QUA      2013-08-17  14:16:09.34
**  ALAR  ORX -004               NDORIDUNGGA
   (21943) 7745 ABOVE DEFINED
                02 00 01 00 00 00 01 00 00 01 03 100d
           BIMAB     ACF-0163             EQU    2013-04-25  17:45:31.15
**  ALAR
           CM -0779
   (20389) 7704 FAIL
           BIMAB     ACF-0150             ENV     2013-05-17  15:37:09.72
*   ALAR
   (52250) 7602 ACF NOTIF
                C is broken
                05 02 0B 9E 00 00
           BIMAB     ACF-0143  QTS-0457    PRO   2013-08-27  03:28:17.14
**  ALAR  ORX -023               NJATIWANG2IL
   (14921) 7607 ORX OPERATION
                detected too high
                00 00 00 83 21 21
           FMUBD2       ACF-0097  QTS-0221    EQU    2013-08-18  12:47:39.60
**  ALAR  ORX -020               EVPEJENG2QTS
   (24594) 7607 ORX OPERATION
                difference exceeding
                1A 09 00 B5 0A 02
           FMUBD2       ACF-1251  QTS-1252    QUA      2013-08-24  13:12:46.15
**  ALAR  ORX -006               EVTEGALSUCI
   (44220) 7744 EXCESSIVE
                00 00 00 64 64 64 64 00 02 50d

every word in line is separated by multiple space its make me confuse Smilie
i want the output like this
Code:
BIMAB;ACF-0168;QTS-0465;QUA;2013-08-17 14:16:09.34;**;ALAR;ORX -004;NDORIDUNGGA;(21943);7745;ABOVE DEFINED;02 00 01 00 00 00 01 00 00 01 03 100d
BIMAB;ACF-0163;EQU;2013-04-25 17:45:31.15;**;ALAR;CM -0779;(20389);7704;FAIL
BIMAB;ACF-0150;ENV;2013-05-17 15:37:09.72;*;ALAR;(52250);7602;ACF NOTIF;C is broken;05 02 0B 9E 00 00
BIMAB;ACF-0143;QTS-0457;PRO;2013-08-27 03:28:17.14;**;ALAR;ORX -023;NJATIWANG2IL;(14921);7607;ORX OPERATION;detected too high;00 00 00 83 21 21
FMUBD2;ACF-0097;QTS-0221;EQU;2013-08-18 12:47:39.60;**;ALAR;ORX -020;EVPEJENG2QTS;(24594);7607;ORX OPERATION;difference exceeding;1A 09 00 B5 0A 02
FMUBD2;ACF-1251;QTS-1252;QUA;2013-08-24 13:12:46.15;**;ALAR;ORX -006;EVTEGALSUCI;(44220);7744;EXCESSIVE;00 00 00 64 64 64 64 00 02 50d

please.. really need your help..
all suggestion i really appreciate


best regards
thanks
# 2  
Old 08-26-2013
Matching using combination of number of leading spaces and field counts may work for you:

Code:
awk '
/^ {11}[^ ].*:[0-9.]{5}$/ {
    if(p) print p;
    if(NF==6) p=$1";"$2";"$3";"$4";"$5" "$6
    else p=$1";"$2";"$3";"$4" "$5
    next
}
/^ {3}[^ ]/ { p=p";"$1";"$2";" ; for(i=3;i<=NF;i++) p=p (i>3?" ":"")$i }
/^[^ ]/ { p=p";"$1";"$2 ; if(NF>3) p=p";"$3" "$4";"$5 }
/^ {11}[^ ]/ { gsub(/^ {11}/,"");p=p";"$0 }
/^ {16}[0-9A-F][0-9A-F] / { gsub(/^ {16}/,"");p=p";"$0}
/^ {16}[^ ]/ { gsub(/^ {16}/,"");p=p";"$0}
END {print p}' infile

This User Gave Thanks to Chubler_XL For This Post:
# 3  
Old 08-27-2013
Quote:
Originally Posted by Chubler_XL
Matching using combination of number of leading spaces and field counts may work for you:

Code:
awk '
/^ {11}[^ ].*:[0-9.]{5}$/ {
    if(p) print p;
    if(NF==6) p=$1";"$2";"$3";"$4";"$5" "$6
    else p=$1";"$2";"$3";"$4" "$5
    next
}
/^ {3}[^ ]/ { p=p";"$1";"$2";" ; for(i=3;i<=NF;i++) p=p (i>3?" ":"")$i }
/^[^ ]/ { p=p";"$1";"$2 ; if(NF>3) p=p";"$3" "$4";"$5 }
/^ {11}[^ ]/ { gsub(/^ {11}/,"");p=p";"$0 }
/^ {16}[0-9A-F][0-9A-F] / { gsub(/^ {16}/,"");p=p";"$0}
/^ {16}[^ ]/ { gsub(/^ {16}/,"");p=p";"$0}
END {print p}' infile

thanks a lot bro..
i try to run this script, the output is not like that i want.
but i really appreciate.. many thanks
# 4  
Old 08-27-2013
Your input file must not match what you posted here, as I get a character-for-character match with your required output:

Code:
BIMAB;ACF-0168;QTS-0465;QUA;2013-08-17 14:16:09.34;**;ALAR;ORX -004;NDORIDUNGGA;(21943);7745;ABOVE DEFINED;02 00 01 00 00 00 01 00 00 01 03 100d
BIMAB;ACF-0163;EQU;2013-04-25 17:45:31.15;**;ALAR;CM -0779;(20389);7704;FAIL
BIMAB;ACF-0150;ENV;2013-05-17 15:37:09.72;*;ALAR;(52250);7602;ACF NOTIF;C is broken;05 02 0B 9E 00 00
BIMAB;ACF-0143;QTS-0457;PRO;2013-08-27 03:28:17.14;**;ALAR;ORX -023;NJATIWANG2IL;(14921);7607;ORX OPERATION;detected too high;00 00 00 83 21 21
FMUBD2;ACF-0097;QTS-0221;EQU;2013-08-18 12:47:39.60;**;ALAR;ORX -020;EVPEJENG2QTS;(24594);7607;ORX OPERATION;difference exceeding;1A 09 00 B5 0A 02
FMUBD2;ACF-1251;QTS-1252;QUA;2013-08-24 13:12:46.15;**;ALAR;ORX -006;EVTEGALSUCI;(44220);7744;EXCESSIVE;00 00 00 64 64 64 64 00 02 50d

# 5  
Old 08-27-2013
Quote:
Originally Posted by Chubler_XL
Your input file must not match what you posted here, as I get a character-for-character match with your required output:

Code:
BIMAB;ACF-0168;QTS-0465;QUA;2013-08-17 14:16:09.34;**;ALAR;ORX -004;NDORIDUNGGA;(21943);7745;ABOVE DEFINED;02 00 01 00 00 00 01 00 00 01 03 100d
BIMAB;ACF-0163;EQU;2013-04-25 17:45:31.15;**;ALAR;CM -0779;(20389);7704;FAIL
BIMAB;ACF-0150;ENV;2013-05-17 15:37:09.72;*;ALAR;(52250);7602;ACF NOTIF;C is broken;05 02 0B 9E 00 00
BIMAB;ACF-0143;QTS-0457;PRO;2013-08-27 03:28:17.14;**;ALAR;ORX -023;NJATIWANG2IL;(14921);7607;ORX OPERATION;detected too high;00 00 00 83 21 21
FMUBD2;ACF-0097;QTS-0221;EQU;2013-08-18 12:47:39.60;**;ALAR;ORX -020;EVPEJENG2QTS;(24594);7607;ORX OPERATION;difference exceeding;1A 09 00 B5 0A 02
FMUBD2;ACF-1251;QTS-1252;QUA;2013-08-24 13:12:46.15;**;ALAR;ORX -006;EVTEGALSUCI;(44220);7744;EXCESSIVE;00 00 00 64 64 64 64 00 02 50d

or i wrong when i write the script. i just copy paste your script to vi editor

Last edited by buncit8; 08-27-2013 at 08:03 PM..
# 6  
Old 08-27-2013
It's an awk script, working on your input file and printing the results to stdout. You can capture the output by using redirection.
# 7  
Old 08-27-2013
Quote:
Originally Posted by RudiC
It's an awk script, working on your input file and printing the results to stdout. You can capture the output by using redirection.
i'm newbie here..
what i was do is, copy paste my input to vi editor and then save with name infile
copy paste the script and then save with name test.
then i run with command 'sh test'
Image

Last edited by buncit8; 08-27-2013 at 08:05 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Change Vertical to Horizontal

I need to change data from vertical to horizontal but with condition input USA|80 AUS|40 BRA|33 VEGAS|40 KENTUCKY|50 NEWYORK|21 DARWIN|33 ADELAIDE|21 SAOPAOLO|44 RIO|89 GAPIZA|44 BENFLEX|32 AXIS|44 ACRE|56 HEIGHT|22 (5 Replies)
Discussion started by: radius
5 Replies

2. Shell Programming and Scripting

How do i do the vertical to horizontal??

51009 8746 8912 17986 20315 24998 5368 38934 7805 8566 (4 Replies)
Discussion started by: nikhil jain
4 Replies

3. Shell Programming and Scripting

awk in horizontal and vertical math

Based on input ail,UTT,id1_0,COMBO,21,24,21,19,85 al,UTHAST,id1_0,COMBO,342,390,361,361,1454 and awk code as awk -F, '{ K=0; for(i=NF; i>=(NF-4); i--) { K=K+$i; J=J+$i;} { print K } } END { for ( l in J ) printf("%s ",J); }' I'm trying to add columns and lines in single line. line... (6 Replies)
Discussion started by: busyboy
6 Replies

4. Shell Programming and Scripting

awk Help: Horizontal to Vertical print with pattern match

Hi AWK Experts, Following is the data : BRH113 DD AA HH CA DD DD AA HH BRH091 A4 A6 AH H7 67 HH J8 9J BRH0991 AA D8 C23 V5 H7 BR2 BRH991 AA HH GG5 BT0 JJ0 I want the output to be alligned with the pattern matching "BRH" inthe line. The output should be look like: A]... (4 Replies)
Discussion started by: rveri
4 Replies

5. Shell Programming and Scripting

Script for parsing vertical log into horizontal

Hi, I have log like this : And i want the output like below : I have try using awk but doesn't work awk ' /ffff /{ts=$1} f && /SectorAntenna\=1/{sa1=$3} f && /SectorAntenna\=2/{sa2=$3} f && /SectorAntenna\=3/{sa3=$3} { s= ts "|" sa1 "|" sa2 "|" sa3 print s f=0 }' (7 Replies)
Discussion started by: justbow
7 Replies

6. Shell Programming and Scripting

awk - horizontal and vertical text extraction

Hi, I need some help in getting extracting the specific horizontal and vertical texts in a single line. I am trying to extract few of the parameters from a config file. Your help is appreciated. Desired Output ---------------- Pool members members ... (4 Replies)
Discussion started by: pratheeshp
4 Replies

7. Shell Programming and Scripting

Need perl or shell script to sort vertical lines to horizontal line in csv format

Need perl or shell script to sort vertical lines to horizontal line in csv format My file like below ------------------------- ================================================================================ PATH PINKY1000#I1-1-ZENTA1000-2#I7-1-ASON-SBR-UP-943113845 ... (4 Replies)
Discussion started by: sreedhargouda.h
4 Replies

8. Shell Programming and Scripting

Vertical And Horizontal Pivoting

Hi All, My Input data is: A=1 B=2 My desired Output should be: A|B 1|2 Thanks in advance... (3 Replies)
Discussion started by: kmsekhar
3 Replies

9. UNIX for Dummies Questions & Answers

vertical to horizontal

dear all, i'm new to unix and i try to figure out the best case for making list of vertical text to become horizontal and skip the line 1 and 2. example text : Data DATE XXXXX MAX 47 53 49 51 48 48 7 46 51 8 25 (6 Replies)
Discussion started by: andrisetia
6 Replies

10. UNIX for Dummies Questions & Answers

Horizontal to vertical

Hi, Silly question, if I have an excel file that looks something like this: ................. Subject 1 Subject 2 Subject 3 Subject 4 Fever..............13...........9.............23..........14 Headache.........2............12...........18..........23... (3 Replies)
Discussion started by: Xterra
3 Replies
Login or Register to Ask a Question