Visit The New, Modern Unix Linux Community


3 Columns to Row question


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting 3 Columns to Row question
# 1  
3 Columns to Row question

I have a file that looks like this...
a
b
c
d
e
f
g
h
i
I would like to it to be like this
a b c
d e f
g h i

Thanks
# 2  
Hammer & Screwdriver One approach

Split the file
Code:
split -3 file79 f79s

creating three files f79saa, f79sab, f79sac

Change new-lines to blanks for each file, like
Code:
tr "\n" " " <f79saa > f79a

and then the other two

Finally, create finished file by cat'ing the three files
Code:
cat f79a > file79new
cat f79b >> file79new
cat f79c >> file79new

# 3  
Hammer & Screwdriver An interesting output, but not quite what you wanted

I thought I figured a quicker way, but the following (while doing something kind of cool) did not provide what you were looking for. However, I thought it would be a good entry to exist in the forum's repositor of Q&A.

Code:
> cat file79
a
b
c
d
e
f
g
h
i

> split -3 file79 f79s | paste f79saa f79sab f79sac
a       d       g
b       e       h
c       f       i

# 4  
Another one:

Code:
awk '{printf("%s%s",$0,NR%3?" ":"\n")}' file

Regards
# 5  
Hi.

Similarly:
Code:
#!/bin/bash -

# @(#) s1       Demonstrate paste, column to row.

echo
echo "(Versions displayed with local utility \"version\")"
version >/dev/null 2>&1 && version "=o" $(_eat $0 $1) paste
set -o nounset
echo

FILE=${1-data1}

echo " Data file $FILE:"
cat $FILE

echo
echo " Results, paste default:"
paste - - - < $FILE

echo
echo " Results, paste separator:"
paste -d" " - - - < $FILE

exit 0

Producing:
Code:
% ./s1

(Versions displayed with local utility "version")
Linux 2.6.11-x1
GNU bash 2.05b.0
paste (coreutils) 5.2.1

 Data file data1:
a
b
c
d
e
f
g
h
i

 Results, paste default:
a       b       c
d       e       f
g       h       i

 Results, paste separator:
a b c
d e f
g h i

cheers, drl
# 6  
Quote:
Originally Posted by Franklin52
Another one:

Code:
awk '{printf("%s%s",$0,NR%3?" ":"\n")}' file

Regards
This only work if the file only contained 1 word and no spaces. My actual file has spaces for example....

a 123
b 123
c 123

and I would like
a 123 b 123 c 123
# 7  
Quote:
Originally Posted by drl
Hi.

Similarly:
Code:
#!/bin/bash -

# @(#) s1       Demonstrate paste, column to row.

echo
echo "(Versions displayed with local utility \"version\")"
version >/dev/null 2>&1 && version "=o" $(_eat $0 $1) paste
set -o nounset
echo

FILE=${1-data1}

echo " Data file $FILE:"
cat $FILE

echo
echo " Results, paste default:"
paste - - - < $FILE

echo
echo " Results, paste separator:"
paste -d" " - - - < $FILE

exit 0

Producing:
Code:
% ./s1

(Versions displayed with local utility "version")
Linux 2.6.11-x1
GNU bash 2.05b.0
paste (coreutils) 5.2.1

 Data file data1:
a
b
c
d
e
f
g
h
i

 Results, paste default:
a       b       c
d       e       f
g       h       i

 Results, paste separator:
a b c
d e f
g h i

cheers, drl

I'm not sure I follow what I should be doing .

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #458
Difficulty: Medium
NTP uses a flat, peer-to-peer system of time sources.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Transpose columns to row

Gents Using the attached file and using this code. awk '{print substr($0,4,2)}' input.txt | sort -k1n | awk '{a++}END{for(i in a) print i,a}' | sort -k1 > output i got the this output. 00 739 01 807 02 840 03 735 04 782 05 850 06 754 07 295 08 388 09 670 10 669 11 762 (8 Replies)
Discussion started by: jiam912
8 Replies

2. Shell Programming and Scripting

Grep and print only certain columns from a row

Hi Friends, This is my input chr1 100 200 + gene_name "alpha"; protein_name "alpha"; level 2; tag "basic"; info "known"; chr1 245 290 + gene_name "alpha-1"; protein_name "alpha-2"; level 9; tag "basic"; info "uknown"; chr1 310 320 + gene_name "alpha"; protein_name "alpha-4"; level 2; info... (3 Replies)
Discussion started by: jacobs.smith
3 Replies

3. UNIX for Dummies Questions & Answers

Select 2 columns and transpose row by row

Hi, I have a tab-delimited file as follows: 1 1 2 2 3 3 4 4 a a b b c c d d 5 5 6 6 7 7 8 8 e e f f g g h h 9 9 10 10 11 11 12 12 i i j j k k l l 13 13 14 14 15 15 16 16 m m n n o o p p The output I need is: 1 1 a a 5 5 e e 9 9 i i 13... (5 Replies)
Discussion started by: mvaishnav
5 Replies

4. UNIX for Dummies Questions & Answers

help [[row and columns]]

i ask to do ,,program that convert the last row to be the first row ,,,and after that exchange the the columns ex,, 1 2 3 4 5 6 7 8 9 to be 7 8 9 4 5 6 1 2 3 and then to be 9 8 7 6 5 4 3 2 1 (0 Replies)
Discussion started by: khaled1989kh
0 Replies

5. Shell Programming and Scripting

help [[row and columns]]

i ask to do ,,program that convert the last row to be the first row ,,,and after that exchange the the columns ex,, 1 2 3 4 5 6 7 8 9 to be 7 8 9 4 5 6 1 2 3 and then to be 9 8 7 6 5 4 3 2 1 give mee the code .... (0 Replies)
Discussion started by: khaled1989kh
0 Replies

6. Shell Programming and Scripting

Print columns from each row

I have awk command to print column 8 awk '/select/ {print $8}' which will print column 8 But I need to print 3, 5 and 8 column in a row and each column should be de-limited by "\t" Hope anyone help me quickly. (2 Replies)
Discussion started by: elamurugu
2 Replies

7. 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

8. Shell Programming and Scripting

Row to Columns question

Hi, I have a question for Row to Columns by script. e.g. i have a file Start 1 2 3 4 End Start 1 2 3 3 4 4 End (6 Replies)
Discussion started by: bleach8578
6 Replies

9. Shell Programming and Scripting

how to change row into columns

hi, I have a input file like a,123,456,789,012,.......,b I need to change the output file into a,123,b a,456,b a,789,b a,012,b a,...,b like that.. how to achieve that through UNIX................. (5 Replies)
Discussion started by: aaha_naga
5 Replies

10. UNIX for Dummies Questions & Answers

Row to Columns

Hi, I have a file like this. 1,1,1,0,0,0 1,1,2,1,0,0 1,1,3,0,0,0 1,1,4,0,0,0 ........... ........... 1,1,24,0,0,0 1,1,25,0,0,0 1,1,26,1,0,0 1,1,27,0,0,0 1,2,1,0,0,0 1,2,2,0,0,0 1,2,3,0,0,0 1,2,4,0,0,0 1,2,5,1,0,0 1,2,6,1,0,0 (4 Replies)
Discussion started by: vskr72
4 Replies

Featured Tech Videos