combining lines in files


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting combining lines in files
# 1  
Old 04-12-2008
combining lines in files

hey,

I want to combine every three lines in a file onto one i.e

old file:
82 67 32
62 58 39
29 47 58
27 34 50
27 35 69
38 58 70

new file:
82 67 32 62 58 39 29 47 58
27 34 50 27 25 69 38 58 70

At the moment I am using the following code:

gawk 'BEGIN {x=0} { if(x<3) {printf("%s",$0) x=x+1} if(x==3) {printf("\n") x=0} }' infile > outfile

but it is saying there is an error, the exact error message is;
gawk: cmd. line:1: BEGIN {x=0} {if(x<2){printf("%s",$0) x=x+1}if(x==2){printf("\n")x=0}}
gawk: cmd. line:1: ^ parse error

I am not very experienced with shell scripting and i was wondering if someone could help point out where I am going wrong!

Thanks!
# 2  
Old 04-12-2008
Code:
gawk 'BEGIN {x=0} { if(x<3) {printf("%s",$0) ; x=x+1} ; if(x==3) {printf("\n") ; x=0} }'

Another way:
Code:
awk '{printf("%s%s", $0, (NR%3 ? "" : "\n"))}' infile > outfile

Jean-Pierre.
# 3  
Old 04-12-2008
Thanks that worked ace Smilie
# 4  
Old 04-12-2008
Another one:

Code:
awk 'ORS=NR%3?FS:RS' file

Use nawk or /usr/xpg4/bin/awk on Solaris.
# 5  
Old 04-13-2008
radoulov: you are teh fabulous.
# 6  
Old 04-13-2008
Hey,

Thanks for all your help, I have another quick question, it turns out that in a couple of the files some of the lines of data i want span 2 lines and some span 3, so I can't use the above argument. However they all start with either a 0 or 3 i.e

3 7895 36454 17363
2644 38264 384754
27374 48478 48585
3 49858 4858 40372
48487 548585 39385
0 278474 3847 3948749
34948 494854
3 4948754 384757 3635634
48475 387475 4847
38747 58595

and i would like this to become like the data written below, i.e. each time a 3 or 0 is seen, a new line is started.

3 7895 36454 17363 2644 38264 384754 27374 48478 48585
3 49858 4858 40372 48487 548585 39385
0 278474 3847 3948749 34948 494854
3 4948754 384757 3635634 48475 387475 4847 38747 58595

Thanks in advance for your help

sme
# 7  
Old 04-13-2008
Quote:
Originally Posted by sme
i would like this to become like the data
Vrom Germany, ja? (-:

This builds on Radoulov's suggestion but is nowhere near as elegant.

Code:
awk 'BEGIN { ORS=FS }
NR > 1 && $1 ~ /^(0|3)$/ { printf "\n"; }
{ print }
END { printf "\n" }' file

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Combining lines in one line

Hi below is the input file snippet. here i want that all the line which is coming after 1 shoud be in one line. so for exanple if after 1 there is two lines which is starting with 2 should be combine in one line. input file content 1,8091012,BATCH_1430903_01,21,T,2,808738,,,,21121:87:01,... (19 Replies)
Discussion started by: scriptor
19 Replies

2. Shell Programming and Scripting

Combining two lines into one, UNIX

Hi All, I have a file which has the following sample lines -- <Member name="Canada" Currency="CAD" -- <Member name="UK" Currency="GBP" -- <Member name="Switzerland" Currency="CHF" -- <Member name="Germany" Currency="EUR" -- (11 Replies)
Discussion started by: dev.devil.1983
11 Replies

3. UNIX for Dummies Questions & Answers

Need help combining txt files w/ multiple lines into csv single cell - also need data merge

:confused:Hello -- i just joined the forums. I am a complete noob -- only about 1 week into learning how to program anything... and starting with linux. I am working in Linux terminal. I have a folder with a bunch of txt files. Each file has several lines of html code. I want to combine... (2 Replies)
Discussion started by: jetsetter
2 Replies

4. Shell Programming and Scripting

Combining lines in to one line

Hi Friends, I have a file1.txt 1001 jkilo yrhfm 200056 jhdf rjhwjkrh 3+u8jk5h3 uru ehjk 1002 jkfhk hfjkd 2748395 fdjksfh hefjkh 3hdfk ejkh kjhjke In the above if you see the firt charcter of each line mentioned in red has a pattern . I need to create another file where , the... (6 Replies)
Discussion started by: i150371485
6 Replies

5. Shell Programming and Scripting

Reading two lines in a while loop and combining the lines

Dear all, I have a file like this: imput scaffold_0 1 scaffold_0 10000 scaffold_0 20000 scaffold_0 25000 scaffold_1 1 scaffold_1 10000 scaffold_1 20000 scaffold_1 23283 and I want the output like this: scaffold_0 1 scaffold_0 10000 scaffold_0 10000 scaffold_0 20000... (6 Replies)
Discussion started by: valente
6 Replies

6. Shell Programming and Scripting

Combining lines between two specific lines

Hi, I have a requirement like following: I have input file like: Question: 1 ----Multiple choice--- What is your favourite colour? Options: a) red b) blue c) none of these Question: 2 ---Multiple choice----- In which month did you join your first job? Options: a) Jan b) Feb c)... (11 Replies)
Discussion started by: ppatra
11 Replies

7. UNIX for Dummies Questions & Answers

Combining lines of files to new file

Hi everybody. I have a number of files that i would like to combine. however not concatenating, but rather extract lines from the files. Example: File1 ------ File2 ------File3 ... line11 ---- line21 ---- line31 ... line12 ---- line22 ---- line32 ... line13 ... (3 Replies)
Discussion started by: kabbo
3 Replies

8. Shell Programming and Scripting

help combining lines in awk

I seem to have gotten myself in over my head on this one. I need help combining lines together. I have a text file containing 24,000 lines (exactly why I need awk) due to bad formatting it has separated the lines (ideally it should be 12,000 lines total). Example of file: ... (2 Replies)
Discussion started by: blueheed
2 Replies

9. Shell Programming and Scripting

need help appending lines/combining lines within a file...

Is there a way to combine two lines onto a single line...append the following line onto the previous line? I have the following file that contains some blank lines and some lines I would like to append to the previous line... current file: checking dsk c19t2d6 checking dsk c19t2d7 ... (2 Replies)
Discussion started by: mr_manny
2 Replies

10. Shell Programming and Scripting

Combining multiple lines

I am fairly new to scripting. But I have been able to extract and format all of my information required into one file. My issue is that one character is on a separate line. I need to be able to add the character to the previous line. ex. abcdefghi 1 bcdefghij 3 cdefghijk 4 need to... (4 Replies)
Discussion started by: DUST
4 Replies
Login or Register to Ask a Question