Concatenate broken rows


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Concatenate broken rows
# 1  
Old 02-24-2015
Concatenate broken rows

I need to concatenate the rows that are broken (because of carriage return and line feed) in unix.

Input

Code:
123|456|789|""
987|786|"GRT
"|""
3455|896|654|456|""
457|234|"RT"|"PR
TY"|""

Output

Code:
123|456|789|""
987|786|"GRT"|""
3455|896|654|456|""
457|234|"RT"|"PRTY"|""


Last edited by joeyg; 02-24-2015 at 12:56 PM.. Reason: Please wrap commands and data examples inside CodeTags
# 2  
Old 02-24-2015
In your example, how would one know which lines were broken into two?
At first, I thought three pipe "|" characters.
But then, realized that not to be the case.

So, how would the determination be made to put lines back together?
# 3  
Old 02-24-2015
Code:
$ awk -F"\"" '{ Q+=NF-1; if((Q%2)==0) { print S $0 ; S=""; Q=0 } else {S = S $0 } } END { if(S) print S }' input

123|456|789|""
987|786|"GRT"|""
3455|896|654|456|""
457|234|"RT"|"PRTY"|""

$

# 4  
Old 02-24-2015
Hello meet,

Please use code tags as per forum rules, following may help you in same.
Code:
awk '{if($0 !~ /.*\"$/){A=$0;getline;A=A $0;print A;next}} 1'  Input_file

Output will be as follows.
Code:
123|456|789|""
987|786|"GRT"|""
3455|896|654|456|""
457|234|"RT"|"PRTY"|""

Thanks,
R. Singh
# 5  
Old 02-24-2015
Try also
Code:
awk '{while (!/\|""$/) {getline X; $0=$0 X}}1' file
123|456|789|""
987|786|"GRT"|""
3455|896|654|456|""
457|234|"RT"|"PRTY"|""

# 6  
Old 02-24-2015
Try:
Code:
awk '!(NR%2){gsub(/\n/,x)}1' RS=\" ORS=\" file

Code:
123|456|789|""
987|786|"GRT"|""
3455|896|654|456|""
457|234|"RT"|"PRTY"|""

# 7  
Old 02-24-2015
Quote:
Originally Posted by joeyg
In your example, how would one know which lines were broken into two?
At first, I thought three pipe "|" characters.
But then, realized that not to be the case.

So, how would the determination be made to put lines back together?


Joeyg,

Lets assume a line should contain 4 pipe "|" characters

Code:
123|456|789|654|""
987|786|"GRT
"|345|""
3455|896|654|456|""
457|234|"RT"|"PR
TY"|""


Code:
123|456|789|654|""
987|786|"GRT"|345|""
3455|896|654|456|""
457|234|"RT"|"PRTY"|""


Last edited by Scrutinizer; 02-24-2015 at 02:29 PM.. Reason: code tags
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Concatenate rows and redefine range

I'm trying to find a way to concatenate consecutive rows (key is column $1 and $2) if column $5 an $6 are integers and redefine ranges in columns $3&$4 and $5&$6 Unfortunately I'm still learning the very basics so I cannot figure a way of doing this with awk. Input file 15 30 21 21 25.0... (11 Replies)
Discussion started by: alex2005
11 Replies

2. Shell Programming and Scripting

Moving or copying first rows and last rows into another file

Hi I would like to move the first 1000 rows of my file into an output file and then move the last 1000 rows into another output file. Any help would be great Thanks (6 Replies)
Discussion started by: kylle345
6 Replies

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

4. Shell Programming and Scripting

Need help to read rows from one file and concatenate to another

Hi guys; TBH I am an absolute novice, when it comes to scripting; I do have an idea of the basic commands... Here is my problem; I have a flatfile 'A' containing a single column with multiple rows. I have to create a script which will use 'A' as input and then output a string in in the... (6 Replies)
Discussion started by: carlos_anubis
6 Replies

5. UNIX for Dummies Questions & Answers

Read rows from source file and concatenate output

Hi guys; TBH I am an absolute novice, when it comes to scripting; I do have an idea of the basic commands... Here is my problem; I have a flatfile 'A' containing a single column with multiple rows. I have to create a script which will use 'A' as input and then output a string in in the... (0 Replies)
Discussion started by: carlos_anubis
0 Replies

6. Shell Programming and Scripting

Deleting specific rows in large files having rows greater than 100000

Hi Guys, I need help in modifying a large text file containing more than 1-2 lakh rows of data using unix commands. I am quite new to the unix language the text file contains data in a pipe delimited format sdfsdfs sdfsdfsd START_ROW sdfsd|sdfsdfsd|sdfsdfasdf|sdfsadf|sdfasdf... (9 Replies)
Discussion started by: manish2009
9 Replies

7. Shell Programming and Scripting

Concatenate some of the rows...

i have a file as below and i need to load it into oracle. The problem is, some of the rows are in 2 lines. 123456_PosWlist ----- ----- IN 0/0 123456_PosWListRpt ----- ----- IN 0/0 123456_PosWListCSV ----- -----... (7 Replies)
Discussion started by: Amit.Sagpariya
7 Replies

8. Shell Programming and Scripting

concatenate two files with different No of rows

need a shell which perform following function file 1 ( every time new data comes) 1212 2323 3434 4545 5656 . . . . file 2 (fixed line) update bc_tbl set aix=data , bix=back where cix=U and serial=; now when i execute shell it will concatinate file 1, file 2 & make file 3 as... (3 Replies)
Discussion started by: The_Archer
3 Replies

9. Shell Programming and Scripting

Concatenate rows in to 2 files

I have 2 files FILEA 1232342 1232342 2344767 4576823 2325642 FILEB 3472328 2347248 1237123 1232344 8787890 I want the output to go into a 3rd file and look like: FILEC 1232342 3472328 (1 Reply)
Discussion started by: unxusr123
1 Replies

10. Shell Programming and Scripting

Concatenate 2 rows into 1 row

I need to search a file for two values (valueA & valueB). ValueA will be on a different row than valueB, and concatenate the two together on the same row of my output. Example: search input file for strings "node" and "OS", combine the two results into one row input node A text text OS... (4 Replies)
Discussion started by: indianadoug
4 Replies
Login or Register to Ask a Question