Remove \n <newline> character inside the records.


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Remove \n <newline> character inside the records.
# 1  
Old 02-01-2012
Remove \n <newline> character inside the records.

Hi,
In my file, I have '\n' characters inside a single record. Because of this, a single records appears in many lines and looks like multiple records. In the below file.

Code:
File 1
====
1,nmae,lctn,da\n
t
2,ghjik,o\n
ut,de\n
fk
 
Expected output after the \n removed
 
File 2
=====
1,nmae,lctn,dat
2,ghjik,out,defk

I tried
Code:
 perl -e 'while (<>) { if (! /\,$/ ) { chomp; } print ;}'

But this will work only if the record ends with the delimiter. Dose, someone have any suggestion on this.
# 2  
Old 02-01-2012
Hi machomaddy,

Try with sed. Here a test:
Code:
$ cat infile
1,nmae,lctn,da
t
2,ghjik,o
ut,de
fk
$ cat script.sed
## First line.
1 {
        ## If last one, print and quit.
        $ {
                p
                q
        }

        ## Else, save in hold space and read next line.
        h
        b
}

## Lines not beginning with number.
/^[0-9]/! {
        ## Append to hold space.
        H

        ## If last line, get content of hold space, remove newlines
        ## and print.
        $ {
                x
                s/\n//g
                p
        }
        b
}

## Lines beginning with number.
/^[0-9]/ {
        ## Exchange content with hold space. Save this line there and
        ## get past lines. Remove newlines and print.
        x
        s/\n//g
        p

        ## If last line, don't save current line, print it instead.
        $ {
                x
                p
        }
        b
}
$ sed -n -f script.sed infile
1,nmae,lctn,dat
2,ghjik,out,defk

Regards,
Birei
# 3  
Old 02-01-2012
Try:
Code:
awk '/^[0-9]*,/{if(p)print p; p=$0; next}{p=p$0}END{print p}'  infile


Last edited by Scrutinizer; 02-01-2012 at 09:57 AM..
These 2 Users Gave Thanks to Scrutinizer For This Post:
# 4  
Old 02-01-2012
Code:
$
$ cat -n f56
     1  1,nmae,lctn,da
     2  t
     3  2,ghjik,o
     4  ut,de
     5  fk
$
$ perl -ne 'chomp; print "\n" if /^\d/ && $.>1; printf; END{print "\n"}' f56
1,nmae,lctn,dat
2,ghjik,out,defk
$
$

tyler_durden
These 2 Users Gave Thanks to durden_tyler For This Post:
# 5  
Old 02-02-2012
Thanks both the code works fine Smilie. But out of curiosity, how to handle if the first column is made of alphabets rather than numerics? In that case all records will become as a single record, correct? Sorry, if I am wrong.
# 6  
Old 02-02-2012
Yes, to reconstruct the records, we used a certain characteristic of that record, in this case the first field consists of a number. If that were not the case then it would be more difficult, and we would need to use something else..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Remove newline character from column spread over multiple lines in a file

Hi, I came across one issue recently where output from one of the columns of the table from where i am creating input file has newline characters hence, record in the file is spread over multiple lines. Fields in the file are separated by pipe (|) delimiter. As header will never have newline... (4 Replies)
Discussion started by: Prathmesh
4 Replies

2. Shell Programming and Scripting

How to remove newline character if it is the only character in the entire file.?

I have a file which comes every day and the file data look's as below. Vi abc.txt a|b|c|d\n a|g|h|j\n Some times we receive the file with only a new line character in the file like vi abc.txt \n (8 Replies)
Discussion started by: rak Kundra
8 Replies

3. Shell Programming and Scripting

Remove last newline character..

Hi all.. I have a text file which looks like below: abcd efgh ijkl (blank space) I need to remove only the last (blank space) from the file. When I try wc -l the file name,the number of lines coming is 3 only, however blank space is there in the file. I have tried options like... (14 Replies)
Discussion started by: Sathya83aa
14 Replies

4. UNIX for Dummies Questions & Answers

Ctrl-V + Ctrl-J for newline character does not work inside vi editor

Hi friends, I am trying to add a newline char ('\n') between the query and the commit statement in the following shell script. #! /bin/sh echo "select * from tab; commit;" > data.sql I have tried typing in "Ctrl-V + Ctrl-J" combination which has inserted ^@ (NUL) character but the commit... (1 Reply)
Discussion started by: royalibrahim
1 Replies

5. Shell Programming and Scripting

Remove newline character between two delimiters

hi i am having delimited .dat file having content like below. test.dat(5 line of records) ====== PT2~Stag~Pt2 Stag Test. Updated~PT2 S T~Area~~UNCEF R20~~2012-05-24 ~2014-05-24~~ PT2~Stag y~Pt2 Stag Test. Updated~PT2 S T~Area~METR~~~2012-05-24~2014-05-24~~test PT2~Pt2 Stag Test~~PT2 S... (4 Replies)
Discussion started by: sushine11
4 Replies

6. Shell Programming and Scripting

Remove newline character or join the broken record

Hi, I have a very huge file, around 1GB of data. I want to remove the newline characters in the file but not preceded by the original end delimiter {} sample data will look like this 1234567 abcd{} 1234sssss as67 abcd{} 12dsad3dad 4sdad567 abcdsadd{} this should look like this... (6 Replies)
Discussion started by: ratheeshjulk
6 Replies

7. Shell Programming and Scripting

any savant ? using AWK/SED to remove newline character between two strings : conditional removal

I'd like to remove (do a pattern or precise replacement - this I can handle in SED using Regex ) ---AFTER THE 1ST Occurrence ( i.e. on the 2nd occurrence - from the 2nd to fourth occurance ) of a specific string : type 1 -- After the 1st occurrence of 1 string1 till the 1st occurrence of... (4 Replies)
Discussion started by: sieger007
4 Replies

8. Shell Programming and Scripting

Remove newline character conditionally

Hi All, I have 5000 records like this Request_id|Type|Status|Priority|Ticket Submitted Date and Time|Actual Resolved Date and Time|Current Ticket Owner Group|Case final Ticket Owner Group|Customer Severity|Reported Symptom/Request|Component|Hot Topic|Reason for Missed SLA|Current Ticket... (2 Replies)
Discussion started by: j_53933
2 Replies

9. Shell Programming and Scripting

To remove the newline character while appending into a file

Hi All, We append the output of a file's size in a file. But a newline character is appended after the variable. Pls help how to clear this. filesize=`ls -l test.txt | awk `{print $5}'` echo File size of test.txt is $filesize bytes >> logfile.txt The output we got is, File size of... (4 Replies)
Discussion started by: amio
4 Replies

10. Shell Programming and Scripting

How to remove a newline character at the end of filename

Hi All, I have named a file with current date,time and year as follows: month=`date | awk '{print $2}'` date=`date | awk '{print $3}'` year=`date | awk '{print $6}'` time=`date +%Hh_%Mm_%Ss'` filename="test_"$month"_"$date"_"$year"_"$time".txt" > $filename The file is created with a... (2 Replies)
Discussion started by: amio
2 Replies
Login or Register to Ask a Question