Remove carriage return and append the next line


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Remove carriage return and append the next line
# 8  
Old 05-11-2016
Do you mind Perl?
Code:
perl -nale 'push @A, @F; if($A[1329]){@p = splice @A, 0, 1330; print "@p"}}END{print "@A"' blah.txt

# 9  
Old 05-12-2016
Quote:
Originally Posted by mad man
@ Ravinder singh

i executed the last command and got 1329 as maximum value in the file.
i edited the command you have given replacing all 1330 with 1329 still no luck.
Thanks
@RudiC hope my last post would have answered you too.
Hello mad man,

Could you please try following and let me know if this helps.
Code:
awk 'FNR==NR{len=length($0)<len?len:length($0);next} {gsub(/\r/,X,$0);if(length($0)<len){Q=Q?Q OFS $0:$0};if(length($0)==len){if(Q){print Q;Q=""};print}}'  Input_file  Input_file

Above code will find out the maximum length into your Input_file and then if any line in Input_file is having lesser length than maximum length value it will print them all together. There could be more terms and conditions but as per your requirement shown I would like to suggest you please try above and let me know how it goes then.

EDIT: Adding a more robust code here, so let's say our Input_file is as follows.
Code:
cat Input_file
Blah blah blah blah Blah blah blah blah
Blah blah blah blah Blah blah blah blah
Blah blah blah blah Blah
blah blah blah
Blah blah blah blah Blah blah blah
Blah blah blah blah Blah blah blah blah

Here I have assumed like if we take maximum length in whole file and then we try merge the lines, there may be a chance while merging lines that they could cross the maximum length as follows we will get while running above code.
Code:
awk 'FNR==NR{len=length($0)<len?len:length($0);next} {gsub(/\r/,X,$0);if(length($0)<len){Q=Q?Q OFS $0:$0};if(length($0)==len){if(Q){print Q;Q=""};print}}'  Input_file Input_file
Blah blah blah blah Blah blah blah blah
Blah blah blah blah Blah blah blah blah
Blah blah blah blah Blah blah blah blah Blah blah blah blah Blah blah blah (Which is more than maximum length)
Blah blah blah blah Blah blah blah blah

To remove these kind of conditions(if you have any into your Input_file) you could try following code then for same.
Code:
awk '{Q=Q?Q OFS $0:$0;len=NF<len?len:NF} END{;print Q > "tmp_file";system("xargs -n " len " < tmp_file")}'   Input_file; rm tmp_file

Output will be as follows then.
Code:
Blah blah blah blah Blah blah blah blah
Blah blah blah blah Blah blah blah blah
Blah blah blah blah Blah blah blah blah
Blah blah blah blah Blah blah blah Blah
blah blah blah Blah blah blah blah

Thanks,
R. Singh

Last edited by RavinderSingh13; 05-12-2016 at 02:41 AM.. Reason: Added more robust solution on same now.
# 10  
Old 05-12-2016
Sample input and output files

Hi All

I have attached the sample input and output files for your view.

Thanks.
# 11  
Old 05-12-2016
Quote:
Originally Posted by Aia
Do you mind Perl?
Code:
perl -nale 'push @A, @F; if($A[1329]){@p = splice @A, 0, 1330; print "@p"}}END{print "@A"' blah.txt

Thanks for your reply.
This perl had gave output in a single line and all the in between multiple spaces were shrunken to single space. But i want the original length.

Thanks.

---------- Post updated at 04:55 PM ---------- Previous update was at 04:10 PM ----------

Quote:
Originally Posted by RavinderSingh13
Hello mad man,

Could you please try following and let me know if this helps.
Code:
awk 'FNR==NR{len=length($0)<len?len:length($0);next} {gsub(/\r/,X,$0);if(length($0)<len){Q=Q?Q OFS $0:$0};if(length($0)==len){if(Q){print Q;Q=""};print}}'  Input_file  Input_file

Above code will find out the maximum length into your Input_file and then if any line in Input_file is having lesser length than maximum length value it will print them all together. There could be more terms and conditions but as per your requirement shown I would like to suggest you please try above and let me know how it goes then.

EDIT: Adding a more robust code here, so let's say our Input_file is as follows.
Code:
cat Input_file
Blah blah blah blah Blah blah blah blah
Blah blah blah blah Blah blah blah blah
Blah blah blah blah Blah
blah blah blah
Blah blah blah blah Blah blah blah
Blah blah blah blah Blah blah blah blah

Here I have assumed like if we take maximum length in whole file and then we try merge the lines, there may be a chance while merging lines that they could cross the maximum length as follows we will get while running above code.
Code:
awk 'FNR==NR{len=length($0)<len?len:length($0);next} {gsub(/\r/,X,$0);if(length($0)<len){Q=Q?Q OFS $0:$0};if(length($0)==len){if(Q){print Q;Q=""};print}}'  Input_file Input_file
Blah blah blah blah Blah blah blah blah
Blah blah blah blah Blah blah blah blah
Blah blah blah blah Blah blah blah blah Blah blah blah blah Blah blah blah (Which is more than maximum length)
Blah blah blah blah Blah blah blah blah

To remove these kind of conditions(if you have any into your Input_file) you could try following code then for same.
Code:
awk '{Q=Q?Q OFS $0:$0;len=NF<len?len:NF} END{;print Q > "tmp_file";system("xargs -n " len " < tmp_file")}'   Input_file; rm tmp_file

Output will be as follows then.
Code:
Blah blah blah blah Blah blah blah blah
Blah blah blah blah Blah blah blah blah
Blah blah blah blah Blah blah blah blah
Blah blah blah blah Blah blah blah Blah
blah blah blah Blah blah blah blah

Thanks,
R. Singh
Hi

The first 2 commands did not produce any output, but the 3rd query produced irregular output. Kindly look at the input and output file i attached.

Note: The rule here is the line is not 1329 in length then the next line will be it's missing part. There no scenario of multiple length messages. fixed length will be 1329.

Thanks.
# 12  
Old 05-12-2016
Quote:
Originally Posted by Aia
Do you mind Perl?
Code:
perl -nale 'push @A, @F; if($A[1329]){@p = splice @A, 0, 1330; print "@p"}}END{print "@A"' blah.txt

Hi Please find the output file created by above inline perl command attached.
# 13  
Old 05-12-2016
Quote:
Originally Posted by mad man
Thanks for your reply.
This perl had gave output in a single line and all the in between multiple spaces were shrunken to single space. But i want the original length.

Thanks.

---------- Post updated at 04:55 PM ---------- Previous update was at 04:10 PM ----------



Hi

The first 2 commands did not produce any output, but the 3rd query produced irregular output. Kindly look at the input and output file i attached.

Note: The rule here is the line is not 1329 in length then the next line will be it's missing part. There no scenario of multiple length messages. fixed length will be 1329.

Thanks.

Hi R.Singh,

Please find the output file generated out of 3rd command attached.
# 14  
Old 05-12-2016
Quote:
Originally Posted by RudiC
You're talking of <newline> chars, not <carriage return>?

Try
Code:
awk  '{while (length < 1330 && getline s>0) $0=$0 " " s}1'  file

Hi Rudi C,

I just changed the 1330 to 1329 in the abv command, looks like the command just added a space in front of the folded line but it did not added it to the previous line. Please find the output file attached. Please find the sample input file in my previous messages.

Thanks.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Remove Carriage Return (CRLF) within double quotes

How to remove Carriage Return (CRLF) within double quotes in a file. There are multiple CRLFs within double quotes. We are on Ubuntu 14.04.2 LTS. The file that we are importing is a csv file from unix to windows and the file was formatted to unix2dos. Therefore all lines in the file all have... (12 Replies)
Discussion started by: covina
12 Replies

2. UNIX for Dummies Questions & Answers

Remove carriage return

I need to remove the carriage return comes inbetween the record. Need to have CR only at the end. I used the below command. tr -d '\n' < filewithcarriagereturns > filewithoutcarriagereturns But its removing all the CR and giving one line output. Input File: 12345 abcdegh... (11 Replies)
Discussion started by: srvn_saru
11 Replies

3. Shell Programming and Scripting

Remove carriage return from the variable

Hi, I try to handle very large numbers with a bash script. I run ssh command in a remote server and store the output in a local variable. But this output contains a return carriage at the end. So I try to remove it by tr But I can't figure out the right notation with printf. So my problem... (6 Replies)
Discussion started by: Meacham12
6 Replies

4. Shell Programming and Scripting

Awk to remove carriage return from 65th field

Hi, I have a pipe delimited file. There are around 700 columns in the file. The 65th column has carriage return which is causing read issue with our ETL process. I would like to replace the new line characters in 65th field with "nothing" i have return the following code and need help to... (7 Replies)
Discussion started by: pinnacle
7 Replies

5. Shell Programming and Scripting

Remove carriage return in a record

Hi all gurus, I need help in removing carriage return existed within a record delimited by pipe <|>. Sample: A_01|Test1|Testing1|Remarks1 A_02|Test2|Test ing2|Remarks2 A_03|Test3|Testing3| Remarks3 Desire output: A_01|Test1|Testing1|Remarks1 A_02|Test2|Testing2|Remarks2... (10 Replies)
Discussion started by: agathaeleanor
10 Replies

6. UNIX for Dummies Questions & Answers

Remove ^M (carriage return) with string manipulation

Hello, I want remove ^M at end of my files line if I use command : tr -d '\r' <inp>out it work fine but get I the same result by manipulating the string ? I want this because in my text file I manipulate some other part I have input "the cat^M" I want output "the cat" I have made... (3 Replies)
Discussion started by: aquila_1
3 Replies

7. Shell Programming and Scripting

sqlplus returning value - remove carriage return '\r' - Please help

Guys - Simple code, i am trying to get a number back from sqlplus call to a query. After that, i need to use that number in a loop. --------------------------------- #!/bin/ksh VALUE=`sqlplus -silent sh/password@sh <<END set pagesize 0 feedback off verify off heading off echo off select... (10 Replies)
Discussion started by: sunshine1974
10 Replies

8. Shell Programming and Scripting

strip carriage return & append next line

Hello everyone, I am trying to search a file for lines that start with 'ip:' and have a carriage return after(ip:$). I then want to remove the carriage return from that line and append the next line in the file to the line containing 'ip'. I tried doing this with SED, but had no luck. Any... (3 Replies)
Discussion started by: vada010
3 Replies

9. UNIX for Dummies Questions & Answers

To remove carriage return between the line

Hi, I have a situation where I need to remove the carriage return between the lines. For.eg. The input file: 1,ad,"adc sdfd",edf 2,asd,"def fde",asd The output file should be 1,ad,adc sdfd,edf 2,asd,def fde,asd Thanks Shash (5 Replies)
Discussion started by: shash
5 Replies

10. UNIX for Dummies Questions & Answers

Remove a carriage return at end of variable

Is there a command in unix to remove a carriage return character(^M) at the end of a variable value? (5 Replies)
Discussion started by: flagship99
5 Replies
Login or Register to Ask a Question