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
# 8  
Old 08-27-2013
The supplied solution is very dependent on the format of you input file.

In particular the number of spaces at the front of each line and the number of fields on each line.

Also ensure file isn't in DOS format try $ dos2unix infile and run solution again. If your still having trouble please attach a zip of you trial input file.
This User Gave Thanks to Chubler_XL For This Post:
# 9  
Old 08-27-2013
Quote:
Originally Posted by Chubler_XL
The supplied solution is very dependent on the format of you input file.

In particular the number of spaces at the front of each line and the number of fields on each line.

Also ensure file isn't in DOS format try $ dos2unix infile and run solution again. If your still having trouble please attach a zip of you trial input file.
i have try dos2unix but still wrong output.
here the zip my input file
really really need your help bro..

thanks
# 10  
Old 08-27-2013
OK, spaces on end of lines were causing issues, try this:

Code:
awk '
{gsub(/ +$/,"") }
/^ {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}/,"");gsub(/ +Not_ID/,";Not_ID");p=p";"$0}
END {print p}' text.txt

This User Gave Thanks to Chubler_XL For This Post:
# 11  
Old 08-28-2013
Quote:
Originally Posted by Chubler_XL
OK, spaces on end of lines were causing issues, try this:

Code:
awk '
{gsub(/ +$/,"") }
/^ {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}/,"");gsub(/ +Not_ID/,";Not_ID");p=p";"$0}
END {print p}' text.txt

still the same Chubler_XL
may you attach the script
i'm using Red Hat Enterprise Linux Server release 5.8 (Tikanga)

thanks alot
# 12  
Old 08-28-2013
For RHEL you will need the --posix command line option:

Code:
awk --posix '
{gsub(/ +$/,"") }
/^ {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}/,"");gsub(/ +Not_ID/,";Not_ID");p=p";"$0}
END {print p}' test.txt

# 13  
Old 08-28-2013
Quote:
Originally Posted by Chubler_XL
For RHEL you will need the --posix command line option:

Code:
awk --posix '
{gsub(/ +$/,"") }
/^ {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}/,"");gsub(/ +Not_ID/,";Not_ID");p=p";"$0}
END {print p}' test.txt

wow.... its work...Smilie
thanks a lot.. thanks a lot.....Smilie

Last edited by buncit8; 08-28-2013 at 01:47 AM..
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