Sponsored Content
Top Forums Shell Programming and Scripting Convert columns to row using awk Post 302756107 by radoulov on Tuesday 15th of January 2013 08:05:09 AM
Old 01-15-2013
I'll try to explain the script.

Code:
func buildrec() {
  if (match($0, />[^<]*<\//))
    rec = length(rec) ? rec OFS substr($0, RSTART + 1, RLENGTH - 3) : \
      substr($0, RSTART + 1, RLENGTH - 3)

buildrec is a user defined function that I used to avoid to repeat the same code for every match.
The function doesn't require parameters as it directly modifies
the global variable rec.
The function code performs the following actions:
- search for the pattern: an > followd by 0 or more occurrences of characters different than <, followed by the closing tag sequence </,
using the following regular expression: >[^<]*<\/
- when match is found, the value is appended to the variable rec (short for record). RSTART and RLENGTH are automatically set by the match builtin function

After that, the code is simple:

Code:
  /col[1-3,5]/ { buildrec() }
  /<TR class="[^"]*"> *$/ && length(rec) {
    print rec
    rec = x
    }

When the records match the pattern represented by the regular expression col[1-3,5], build the record - append the values.
When the pattern <TR class="[^"]*"> *$ matches for a second time (rec is already build) - print the record and reset it: rec = x.
x is an uninitialized variable, so I'm using it as a shortcut for "".
This User Gave Thanks to radoulov For This Post:
 

8 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

convert matrix to row and columns

Dear Unix Gurus, I have a sample data set that looks like this y1 y2 y3 y4 y5 x1 0.3 0.5 2.3 3.1 5.1 x2 1.2 4.1 3.5 1.7 1.2 x3 3.1 2.1 1.0 4.1 2.1 x4 5.0 4.0 6.0 7.0 1.1 I want to open it up so that I get x1 y1 0.3 x2 y1 1.2 x3 y1 3.1 x4 y1 5.0 x1 y2 0.5 x2 y2... (3 Replies)
Discussion started by: tintin72
3 Replies

2. Shell Programming and Scripting

How to convert 2 column data into multiple columns based on a keyword in a row??

Hi Friends I have the following input data in 2 columns. SNo 1 I1 Value I2 Value I3 Value SNo 2 I4 Value I5 Value I6 Value I7 Value SNo 3 I8 Value I9 Value ............... ................ SNo N (1 Reply)
Discussion started by: ks_reddy
1 Replies

3. Shell Programming and Scripting

Convert columns to single row

Hello all I have data like 1 2 3 4 5 I wish my output would be like 1,2,3,4,5 For this i have executed 'BEGIN {FS="\n"; ORS=","} {print $0}' test and got the output as 1,2,3,4,5, I do not want to have , at the end of 5. output should be like (5 Replies)
Discussion started by: vasuarjula
5 Replies

4. Shell Programming and Scripting

By using AWK can I convert matrice shaped data to a row ?

Hello, I have output in the matrice form , for example: 1 2 3 4 a b c d jim joe sue tom how can I convert this line-column data into a row as follows 1 2 3 4 a b c d jim joe sue tom thank you (14 Replies)
Discussion started by: rpf
14 Replies

5. Shell Programming and Scripting

awk print specific columns one row at a time

Hello, I have the following piece of code: roleName =`cat $inputFile | awk -F';' '{ print $1 }'` roleDescription =`cat $inputFile | awk -F';' '{ print $2 }'` roleAuthProfile =`cat $inputFile | awk -F';' '{ print $3 }'` mappedUserID (5 Replies)
Discussion started by: pr0tocoldan
5 Replies

6. UNIX for Dummies Questions & Answers

awk: convert column to row in a specific way

Hi all! I have this kind of output: a1|b1|c1|d1|e1 a2|b2|c2 a3|b3|c3|d3 I would like to transpose columns d and e (when they exist) in column c, and under the row where they come from. Then copying the beginning of the row. In order to obtain: a1|b1|c1 a1|b1|d1 a1|b1|e1 a2|b2|c2... (1 Reply)
Discussion started by: lucasvs
1 Replies

7. Shell Programming and Scripting

Convert row to columns start from nth column

Dear All, We have input like this: 161 57 1378 176 1392 262 1444 441 1548 538 1611 670 1684 241 57 1378 208 1393 269 1447 444 1549 538 1610 677 1700 321 ... (4 Replies)
Discussion started by: attila
4 Replies

8. Shell Programming and Scripting

awk split columns to row after N number of column

I want to split this with every 5 or 50 depend on how much data the file will have. And remove the comma on the end Source file will have 001,0002,0003,004,005,0006,0007,007A,007B,007C,007E,007F,008A,008C Need Output from every 5 tab and remove the comma from end of each row ... (4 Replies)
Discussion started by: ranjancom2000
4 Replies
diction(1)						      General Commands Manual							diction(1)

NAME
diction, explain, suggest - Prints wordy sentences and looks them up in an interactive thesaurus. SYNOPSIS
diction [-fpattern_file] [-k] [-ma] [-me] [-ml] [-ms] [-n] [file...] explain suggest The diction command finds all sentences in an English language document that contain phrases from a database of bad or wordy diction. The explain command is an interactive thesaurus for the English language phrases found by the diction command and only for those phrases. The diction command reads from standard in if no file operand is provided. The suggest command is a synonym for explain. OPTIONS
Names a user-created pattern file to be used in addition to the default file. Passes the -k option to the deroff command. The -k option keeps blocks of text specified nroff by requests or macros; for example, the request. Passes the -ma option to deroff. The -ma option interprets nroff man macros only. Overrides the default nroff -ms macro package. Causes deroff to skip lists; should be used if a docu- ment contains many lists of nonsentences. Overrides the default nroff -ms macro package. Suppresses use of the default file (used with -f). Only the user-created pattern file is used. DESCRIPTION
Each phrase found by the diction command is enclosed in [ ] (brackets). Because diction runs deroff before looking at the text, include formatting header files as part of the input. Before using the explain command, use the diction command to obtain a list of poorly worded phrases. When you use the explain command, the system prompts you for a phrase and responds with a grammatically acceptable alternative. You can continue typing phrases, or you can exit by pressing the End-of-File key sequence. The explain command can also take input redirected from a file. No other command line arguments are valid. NOTES
Use of nonstandard formatting macros may cause incorrect sentence breaks. In particular, diction does not understand -me. FILES
Default pattern file. Thesaurus used by the explain command. SEE ALSO
Commands: deroff(1), nroff(1) diction(1)
All times are GMT -4. The time now is 02:40 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy