Sponsored Content
Top Forums Shell Programming and Scripting Reformatting Column into rows Post 302746107 by Don Cragun on Tuesday 18th of December 2012 07:01:35 PM
Old 12-18-2012
If you were looking for something that self adjusts based on the column headings and data to be displayed, you could try something like:
Code:
awk -F" : " '
# c[heading] = # of values accumulted for heading
# h[heading] = heading_field
# hc = # of headings
# ho[heading_field] = heading
# r = # of rows to be printed (not counting headings)
# v[heading,c[heading]] = value to be printed in row c[heading] under heading
# w[heading_field] = widest field data for heading_field
{       v[$1,++c[$1]] = $2
        if(!($1 in h)) {
                ho[++hc] = $1
                h[$1] = hc
                w[hc] = length($1)
        }
        if(w[h[$1]] < length($2)) w[h[$1]] = length($2)
        if(c[$1] > r) r = c[$1]$1, c[$1], $1, h[$1], hc, ho[hc], r, $1, $1, c[$1], v[$1,c[$1]], h[$1], w[h[$1]])}
END {   for(i = 1; i < hc; i++)
                printf("%-*.*s", w[i] + 3, w[i] + 3, ho[i])
        printf("%-s\n", ho[hc]);
        for(j = 1; j <= r; j++) {
                for(i = 1; i < hc; i++)
                        printf("%-*.*s", w[i] + 3, w[i] + 3, v[ho[i], j]);
                printf("%-s\n", v[ho[hc], j]);
        }
}' file

With the sample input file given in the 1st message in this thread, it produces the output:
Code:
xxx       11            xyz
yyy zzz   111 222 xxx   abc def
aaa bbb   555 333 yy    abc xyz

 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

column to rows based on another column...

Guys, i have a file in below format where the barcode's are uniq per site but could be repeated for different site. so i want to convert the site column to rows based on the barcode's as below output. your help is appreciated!!! input: SITE BARCODE QTY SP CP 10001 6281103890017 10 50 48... (5 Replies)
Discussion started by: malcomex999
5 Replies

2. UNIX for Dummies Questions & Answers

How to sum rows in e.g. column 1 by a category in e.g. column 2

Hi, I've shown an example of what I would like to achieve below. In the example file, I would like to sum the values in column 2 for each distinct category in column 3 (presumably making an array?) and print the sum as well as the category name and length (note:length always corresponds with... (8 Replies)
Discussion started by: auburn
8 Replies

3. Shell Programming and Scripting

Rows to Column

I have a tab delimited file like this: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 I want it to look like: 1 7 13 2 8 14 3 9 15 4 10 16 5 11 17 6 12 18 (3 Replies)
Discussion started by: theawknewbie
3 Replies

4. Shell Programming and Scripting

Reformatting single column text file starting new line when finding particular string

Hi, I have a single colum file and I need to reformat the file so that it creates a new line every time it come to an IP address and the following lines are corresponding rows until it comes to the next IP address. I want to turn this 172.xx.xx.xx gwpusprdrp02_pv seinwnprd03... (7 Replies)
Discussion started by: kieranfoley
7 Replies

5. UNIX for Dummies Questions & Answers

Converting column to rows for every 3 lines in the column

Hi gurus! Please help me with this one. I have an file with the following contents: a b c d e f g h i j I would like to make to transform it to look like this as my output file: a,b,c d,e,f (4 Replies)
Discussion started by: kokoro
4 Replies

6. Shell Programming and Scripting

awk command to print only selected rows in a particular column specified by column name

Dear All, I have a data file input.csv like below. (Only five column shown here for example.) Data1,StepNo,Data2,Data3,Data4 2,1,3,4,5 3,1,5,6,7 3,2,4,5,6 5,3,5,5,6 From this I want the below output Data1,StepNo,Data2,Data3,Data4 2,1,3,4,5 3,1,5,6,7 where the second column... (4 Replies)
Discussion started by: ks_reddy
4 Replies

7. UNIX for Dummies Questions & Answers

merging rows into new file based on rows and first column

I have 2 files, file01= 7 columns, row unknown (but few) file02= 7 columns, row unknown (but many) now I want to create an output with the first field that is shared in both of them and then subtract the results from the rest of the fields and print there e.g. file 01 James|0|50|25|10|50|30... (1 Reply)
Discussion started by: A-V
1 Replies

8. UNIX for Dummies Questions & Answers

[Solved] Deleting all rows where the first column equals the second column

Hi, I have a tab delimited text file where the first two columns equal numbers. I want to delete all rows where the value in the first column equals the second column. How do I go about doing that? Thanks! Input: 1 1 ABC DEF 2 2 IJK LMN 1 2 ZYX OPW Output: 1 2 ZYX OPW (2 Replies)
Discussion started by: evelibertine
2 Replies

9. Shell Programming and Scripting

Converting Single Column into Multiple rows, but with strings to specific tab column

Dear fellows, I need your help. I'm trying to write a script to convert a single column into multiple rows. But it need to recognize the beginning of the string and set it to its specific Column number. Each Line (loop) begins with digit (RANGE). At this moment it's kind of working, but it... (6 Replies)
Discussion started by: AK47
6 Replies

10. Shell Programming and Scripting

Help reformatting column

Hello UNIX experts, I'm stumped finding a method to reformat a column. Input file is a two column tab-delimited file. Essentially, for every term that appears in column 2, I would like to summarize whether that term appears for every entry in column 1. In other words, make a header for each term... (2 Replies)
Discussion started by: torchij
2 Replies
GROHTML(1)						      General Commands Manual							GROHTML(1)

NAME
grohtml - html driver for groff SYNOPSIS
grohtml [ -bhlnprv ] [ -aaa-text-bits ] [ -Ddir ] [ -Fdir ] [ -gaa-graphic-bits ] [ -iresolution ] [ -Iimage-stem ] [ -jfilename ] [ -oimage-vertical-offset ] [ -ssize ] [ -Slevel ] [ files... ] DESCRIPTION
The grohtml front end (which consists of a preprocessor, pre-grohtml, and a device driver, post-grohtml) translates the output of GNU troff to html. Users should always invoke grohtml via the groff command with a -Thtml option. If no files are given, grohtml will read the standard input. A filename of - will also cause grohtml to read the standard input. Html output is written to the standard output. When grohtml is run by groff options can be passed to grohtml using groff's -P option. OPTIONS
-aaa-text-bits Number of bits of antialiasing information to be used by text when generating png images. The default is 4 but valid values are 0, 1, 2, and 4. Note your version of gs needs to support the -dTextAlphaBits and -dGraphicAlphaBits options in order to exploit antialiasing. A value of 0 stops grohtml from issuing antialiasing commands to gs. -b Initialize the background color to white. -Ddir Inform grohtml to place all image files into directory dir. -Fdir Prepend directory dir/devname to the search path for font and device description files; name is the name of the device, usually html. -gaa-graphic-bits Number of bits of antialiasing information to be used by graphics when generating png images. The default is 4 but valid values are 0, 1, 2, and 4. Note your version of gs needs to support the -dTextAlphaBits and -dGraphicAlphaBits options in order to exploit antialiasing. A value of 0 stops grohtml from issuing antialiasing commands to gs. -h Generate section and number headings by using <B>...</B> and increasing the font size, rather than using the <Hn>...</Hn> tags. -iresolution Select the resolution for all images. By default this is 100 pixels per inch. Example: -i200 indicates 200 pixels per inch. -Istem Determine the image stem name. If omitted grohtml uses grohtml-XXX (XXX is the process ID). -jfilename Inform grohtml to split the html output into multiple files. The filename is the stem and specified section headings (default is level one) start a new file, named filename-n.html. -l Turn off the production of automatic section links at the top of the document. -n Generate simple heading anchors whenever a section/number heading is found. Without the option the anchor value is the textual heading. This can cause problems when a heading contains a `?' on older versions of some browsers (Netscape). This flag is auto- matically turned on if a heading contains an image. -overtical-offset Specify the vertical offset of images in points. -p Display page rendering progress to stderr. grohtml only displays a page number when an image is required. -r Turn off the automatic header and footer line (html rule). -s size Set the base point size of the source file. Thereafter when this point size is used in the source it will correspond to the html base size. Every increase of two points in the source will yield a <big> tag, and conversely when a decrease of two points is seen a <small> tag is emitted. -Slevel When splitting html output, split at the heading level (or higher) defined by level. -v Print the version number. USAGE
There are styles called R, I, B, and BI mounted at font positions 1 to 4. DEPENDENCIES
grohtml is dependent upon the png utilities (pnmcut, pnmcrop, pnmtopng) and GhostScript (gs). pnmtopng (version 2.37.6 or greater) and pnmcut from the netpbm package (version 9.16 or greater) will work also. It is also dependent upon psselect from the PSUtils package. Images are generated whenever a table, picture, equation or line is encountered. BUGS
Grohtml has been completely redesigned and rewritten. It is still beta code. SEE ALSO
afmtodit(1), groff(1), troff(1), psbb(1), groff_out(5), groff_font(5), groff_char(7) Groff Version 1.19.2 24 November 2004 GROHTML(1)
All times are GMT -4. The time now is 08:00 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy