Sponsored Content
Full Discussion: Rows into columns?
Top Forums Shell Programming and Scripting Rows into columns? Post 302427491 by DeCoTwc on Sunday 6th of June 2010 04:47:01 PM
Old 06-06-2010
I'm sorry to keep clogging people's posts. I've been practicing trying to find pure shell (or close to) solutions to problems, so while this may not be the most practical solution for your needs, I'd appreciate if anyone could tell me if there's a better way I could have solved this guys problem than what I came up with:

Code:
(23:43:55\[D@DeCoBox15)
[~]$ cat input
Joe Smith jsmith 43234 bill1;bill2;read;read2;schedule
Andy Summers asummers 11232 bill1;read
Beth McConnel bmconnel 43443 read;read2;schedule;bill
Susan Fowler sfowler 09332 bill1;read;schedule

(01:16:30\[D@DeCoBox15)
[~]$ cat mysolution
#!/bin/bash
    tr ";" "\n" < $1 | while read line; do
        if [[ $(echo $line|wc -w) -gt 1 ]]; then
            array=($line);
            echo "${array[*]}";
        else
            echo "${array[0]} ${array[1]} ${array[2]} ${array[3]} $line";
        fi;
    done

(01:16:54\[D@DeCoBox15)
[~]$ ./mysolution input
Joe Smith jsmith 43234 bill1
Joe Smith jsmith 43234 bill2
Joe Smith jsmith 43234 read
Joe Smith jsmith 43234 read2
Joe Smith jsmith 43234 schedule
Andy Summers asummers 11232 bill1
Andy Summers asummers 11232 read
Beth McConnel bmconnel 43443 read
Beth McConnel bmconnel 43443 read2
Beth McConnel bmconnel 43443 schedule
Beth McConnel bmconnel 43443 bill
Susan Fowler sfowler 09332 bill1
Susan Fowler sfowler 09332 read
Susan Fowler sfowler 09332 schedule

I think I could have eliminated the tr if I changed the IFS and tweaked the way I set the names, but this is the best I could come up with.

Damn, after trying out Bartus's solution, I just feel silly now...

Code:
[~]$ time awk '{n=split($5,a,";");for(i=1;i<=n;i++){print $1,$2,$3,$4,a[i]}}' pxe > /dev/null

real    0m0.088s
user    0m0.000s
sys     0m0.031s

(23:49:50\[D@DeCoBox15)
[~]$ time ./tst > /dev/null

real    0m2.338s
user    0m0.391s
sys     0m0.516s


Last edited by DeCoTwc; 06-06-2010 at 07:17 PM.. Reason: completely boinked it the first time
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

# of rows and columns

Hi, Does anyone know the command to know the # of rows and columns for a file? thanks (3 Replies)
Discussion started by: kylle345
3 Replies

2. Shell Programming and Scripting

Columns into rows

Hi, Let me know how to achieve the below requirment Input: ======== BEGIN DSSUBRECORD Name "DOC_NO_2" SqlType "-5" Precision "0" Scale "0" Nullable "0" END DSSUBRECORD BEGIN DSSUBRECORD Name "FROM_LOC" ... (1 Reply)
Discussion started by: Ramya_1104
1 Replies

3. Shell Programming and Scripting

rows to columns

Hi Friends, I have a input file as below. how to convert rows to columns? Friday:recharge 3861140 Monday:recharge 4036228 Saturday:recharge 3996376 Sunday:recharge 3777749 Thursday:recharge 3858537 Tuesday:recharge 4047045 Wednesday:recharge 3954798 desinred output Sunday ... (3 Replies)
Discussion started by: suresh3566
3 Replies

4. Shell Programming and Scripting

Rows into Columns

Input File vCenter Servers: 172.28.173.207: vCenter Server connectivity status: Accessible ESX servers: Name: nyp-vhst1001-at.hq.nt.life.com IP address: 10.34.36.11 Virtual machines: Name:nyp-bbmds-at Ip address: 172.28.173.139 ... (1 Reply)
Discussion started by: greycells
1 Replies

5. Shell Programming and Scripting

Rows to Columns

Hi Guru's, I have a requirement where i need to convert rows to column based on a key column. Input: Account_id|Trip_Org|Trip_Dest|City|Hotel_Nm 123|DFW|CHI|Dallas|Hyatt 123|LAS|LPA|Vegas|Hyatt Palace Output:... (6 Replies)
Discussion started by: rakesh5300
6 Replies

6. Shell Programming and Scripting

Deleting all the fields(columns) from a .csv file if all rows in that columns are blanks

Hi Friends, I have come across some files where some of the columns don not have data. Key, Data1,Data2,Data3,Data4,Data5 A,5,6,,10,, A,3,4,,3,, B,1,,4,5,, B,2,,3,4,, If we see the above data on Data5 column do not have any row got filled. So remove only that column(Here Data5) and... (4 Replies)
Discussion started by: ks_reddy
4 Replies

7. Shell Programming and Scripting

Evaluate 2 columns, add sum IF two columns match on two rows

Hi all, I know this sounds suspiciously like a homework course; but, it is not. My goal is to take a file, and match my "ID" column to the "Date" column, if those conditions are true, add the total number of minutes worked and place it in this file, while not printing the original rows that I... (6 Replies)
Discussion started by: mtucker6784
6 Replies

8. Shell Programming and Scripting

Compare 2 csv files by columns, then extract certain columns of matcing rows

Hi all, I'm pretty much a newbie to UNIX. I would appreciate any help with UNIX coding on comparing two large csv files (greater than 10 GB in size), and output a file with matching columns. I want to compare file1 and file2 by 'id' and 'chain' columns, then extract exact matching rows'... (5 Replies)
Discussion started by: bkane3
5 Replies

9. Shell Programming and Scripting

Rows to columns

Hi, I have a text file with records as below Service Contract: Account Type: Client Number: Group Number: Account Currency: I want to print 2nd,3rd and 5th as a separate column, like -> Account Type: ,Client Number: ,Account Currency: How can I do that? (1 Reply)
Discussion started by: dsid
1 Replies

10. UNIX for Beginners Questions & Answers

Columns to rows

HI UNIX Gurus, Not sure if this was already asked and an UNIX Guru has replied but I could not find what i wanted. I have linux environment and need help on this. I have several files like this. a,1 b,1 utc,10/12/2019 local,10/12/2018 name,xxxy deg,feh 10,12 20,8 30,50 32,64 46,65... (5 Replies)
Discussion started by: Roopensingh
5 Replies
TABS(1) 						    BSD General Commands Manual 						   TABS(1)

NAME
tabs -- set terminal tabs SYNOPSIS
tabs [-n | -a | -a2 | -c | -c2 | -c3 | -f | -p | -s | -u] [+m[n]] [-T type] tabs [-T type] [+[n]] n1[,n2,...] DESCRIPTION
The tabs utility displays a series of characters that clear the hardware terminal tab settings then initialises tab stops at specified posi- tions, and optionally adjusts the margin. In the first synopsis form, the tab stops set depend on the command line options used, and may be one of the predefined formats or at regular intervals. In the second synopsis form, tab stops are set at positions n1, n2, etc. If a position is preceded by a '+', it is relative to the previous position set. No more than 20 positions may be specified. If no tab stops are specified, the ``standard'' UNIX tab width of 8 is used. The options are as follows: -n Set a tab stop every n columns. If n is 0, the tab stops are cleared but no new ones are set. -a Assembler format (columns 1, 10, 16, 36, 72). -a2 Assembler format (columns 1, 10, 16, 40, 72). -c COBOL normal format (columns 1, 8, 12, 16, 20, 55) -c2 COBOL compact format (columns 1, 6, 10, 14, 49) -c3 COBOL compact format (columns 1, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50, 54, 58, 62, 67). -f FORTRAN format (columns 1, 7, 11, 15, 19, 23). -p PL/1 format (columns 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61). -s SNOBOL format (columns 1, 10, 55). -u Assembler format (columns 1, 12, 20, 44). +m[n], +[n] Set an n character left margin, or 10 if n is omitted. -T type Output escape sequence for the terminal type type. ENVIRONMENT
The LANG, LC_ALL, LC_CTYPE and TERM environment variables affect the execution of tabs as described in environ(7). The -T option overrides the setting of the TERM environment variable. If neither TERM nor the -T option are present, tabs will fail. EXIT STATUS
The tabs utility exits 0 on success, and >0 if an error occurs. SEE ALSO
expand(1), stty(1), tput(1), unexpand(1), termcap(5) STANDARDS
The tabs utility conforms to IEEE Std 1003.1-2001 (``POSIX.1''). HISTORY
A tabs utility appeared in PWB UNIX. This implementation was introduced in FreeBSD 5.0. BUGS
The current termcap(5) database does not define the 'ML' (set left soft margin) capability for any terminals. BSD
May 20, 2002 BSD
All times are GMT -4. The time now is 04:28 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy