Visit Our UNIX and Linux User Community


add character to the end of each line in file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting add character to the end of each line in file
# 8  
Old 07-27-2009
Quote:
Originally Posted by edidataguy
Ha.. how could I have missed that? I was thinking of only HEX. Thanks.
Try this:
Code:
sed 's/$/\r\n/' filename > new_filename

Sorry, there was an error. This works:
Code:
sed 's/$/\r/' filename > new_filename



---------- Post updated at 01:08 AM ---------- Previous update was at 12:59 AM ----------

Quote:
Originally Posted by durden_tyler
If your file was created in Unix/Linux or any of their variants, then it would have "\012" (or ASCII decimal 10 or "newline" character) at the last position.

If it was created in MS Windows, DOS, OS/2 etc. then it would have "\015" and "\012" ( CR+LF ) at the last two positions.

Since you are asking about CR+LF, I'd assume your file was created in Unix/Linux and has "\n" as the end-of-line character.

The sed command proposed earlier won't give correct results because it adds "\r\n" at the end, i.e. after the "\n" at the end.

Code:
$ 
$ # my system is Linux
$ uname -o
GNU/Linux
$ 
$ # create a file
$ for i in 1 2 3 ; do
>   echo "ABCDEF-LINE:00$i"
> done >data.txt
$ 
$ cat data.txt
ABCDEF-LINE:001
ABCDEF-LINE:002
ABCDEF-LINE:003
$ 
$ # check the octal dump
$ od -bc data.txt
0000000 101 102 103 104 105 106 055 114 111 116 105 072 060 060 061 012
          A   B   C   D   E   F   -   L   I   N   E   :   0   0   1  \n
0000020 101 102 103 104 105 106 055 114 111 116 105 072 060 060 062 012
          A   B   C   D   E   F   -   L   I   N   E   :   0   0   2  \n
0000040 101 102 103 104 105 106 055 114 111 116 105 072 060 060 063 012
          A   B   C   D   E   F   -   L   I   N   E   :   0   0   3  \n
0000060
$ 
$ # so we have just the "\n" as the EOL character
$ # try the sed script
$ sed 's/$/\r\n/' data.txt > new_data.txt
$ 
$ # check the octal dump
$ od -bc new_data.txt
0000000 101 102 103 104 105 106 055 114 111 116 105 072 060 060 061 015
          A   B   C   D   E   F   -   L   I   N   E   :   0   0   1  \r
0000020 012 012 101 102 103 104 105 106 055 114 111 116 105 072 060 060
         \n  \n   A   B   C   D   E   F   -   L   I   N   E   :   0   0
0000040 062 015 012 012 101 102 103 104 105 106 055 114 111 116 105 072
          2  \r  \n  \n   A   B   C   D   E   F   -   L   I   N   E   :
0000060 060 060 063 015 012 012
          0   0   3  \r  \n  \n
0000066
$ 
$ cat new_data.txt
ABCDEF-LINE:001
 
ABCDEF-LINE:002
 
ABCDEF-LINE:003
 
$

Here's one way to do it in Perl:

Code:
$ 
$ cat data.txt
ABCDEF-LINE:001
ABCDEF-LINE:002
ABCDEF-LINE:003
$ 
$ perl -ne 's/\n/\r\n/; print' data.txt >mod_data.txt
$ 
$ od -bc mod_data.txt
0000000 101 102 103 104 105 106 055 114 111 116 105 072 060 060 061 015
          A   B   C   D   E   F   -   L   I   N   E   :   0   0   1  \r
0000020 012 101 102 103 104 105 106 055 114 111 116 105 072 060 060 062
         \n   A   B   C   D   E   F   -   L   I   N   E   :   0   0   2
0000040 015 012 101 102 103 104 105 106 055 114 111 116 105 072 060 060
         \r  \n   A   B   C   D   E   F   -   L   I   N   E   :   0   0
0000060 063 015 012
          3  \r  \n
0000063
$

tyler_durden
Durden_tyler
Regarding your comment:
""The sed command proposed earlier won't give correct results because it adds "\r\n" at the end, i.e. after the "\n" at the end.""

Actually it was not adding "\r\n" at the end after "\n" as mentioned.
It was adding the "\r" at the right position.
But was adding an extra "\n" at the end.
The correct code should have been:
Code:
sed 's/$/\r/' filename > new_filename

I have tested it and itworks as expected.

Previous Thread | Next Thread
Test Your Knowledge in Computers #484
Difficulty: Medium
A compiler transforms source code into object code, a floating point number format that machines understand.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Conditionally add character at end of line

Hi, I would like have a shell script to check every line in a file to see if it ends with ";". If this is NOT the last character ";" should be added. MyFile.csv : web9331801;01/01/2014 23:39:35;;"93962";353150256; web9331802;01/01/2014 23:44:29;;"479288";353153538; web9331803;01/01/2014... (14 Replies)
Discussion started by: vg77
14 Replies

2. Shell Programming and Scripting

How to add newline character at end of file?

Hi All, I have following piece of code in UNIX C Shell script and I want to add one more command which can add newline at the end of file only if there is no newline character exists. foreach file (`ls $dd_PLAYCARD_EDI_IN`) if ( -f $dd_PLAYCARD_EDI_IN/${file} ) then cat -n... (4 Replies)
Discussion started by: jnrohit2k
4 Replies

3. Shell Programming and Scripting

How to add a character at end of line?

Hai, I have got a small requirement in my script. and i am using bash shell. I need to add a dot (.) for some particular line in a file. Say for example, $Cat rmfile 1 This is line1 2 This is line2 3 This is line3 O/p should be : $Cat rmfile 1 This is line1 2 This is line2. #... (2 Replies)
Discussion started by: Sivajee
2 Replies

4. Shell Programming and Scripting

How to Remove comma as last character in end of last line of file?

how to Remove comma as last charector in end of last line of file: example: input file --------------- aaaaaa, bbbbbb, cccc, 12345, ____________ output file : ----------- aaaaaa, bbbbbb, (6 Replies)
Discussion started by: RahulJoshi
6 Replies

5. Shell Programming and Scripting

How to remove new line character at end of file.

I need to remove new line character from end of file. Suppose here are content. a|b|c|d|r a|b|c|d|r a|b|c|d|r <new line> that means file contains 4 lines but data is there in 3 lines. so I want that only 3 lines should be there in file. Please help (20 Replies)
Discussion started by: varun940
20 Replies

6. Shell Programming and Scripting

add character to every end-of line in file

Hi All I have a file which conatins record.the length of every records is 47. problem : in the end of record i don't have a "\015" character. i want to add this "\015" charcter in the end of every record. the file contains something like 700 records. i've tried with sed command - nothing. ... (8 Replies)
Discussion started by: naamas03
8 Replies

7. Shell Programming and Scripting

append a character at end of each line of a file

Hi, i want to append a character '|' at end of each line of a file abc.txt. for example if the file abc.txt conatins: a|b|c 1|2|33 w|2|11 i want result file xyz.txt a|b|c| 1|2|33| w|2|11| I know this is simple but sumhow i am not able to reach end of line. its urgent, thanks for... (4 Replies)
Discussion started by: muaz
4 Replies

8. UNIX for Dummies Questions & Answers

How to add new line character at the end of a file

hi all, i have this question: How to add new line character at the end of a file???? i need this because i am loading a file to sybase and i have problems with the last record thanks for your help (5 Replies)
Discussion started by: DebianJ
5 Replies

9. UNIX for Dummies Questions & Answers

removing a character and addending to end in each line in a file

HI i am having a file this (sys19:pnlfct:/pfact/temp>) cat temp_sand 1234567890 1234567890 1234567890 1234567890 I want to make this file as (sys19:pnlfct:/pfact/temp>) cat temp_sand 1456789023 1456789023 1456789023 1456789023 just take the 2nd and 3rd position and put it... (5 Replies)
Discussion started by: arunkumar_mca
5 Replies

10. UNIX for Advanced & Expert Users

Deleting end of line $ character in file

Hi, I've got a file where in the middle of the record is a $ end of line character, visible only when I open the file in vi and do :set list. How to I get rid of the character in the middle and keep it at the end. The middle $ character always appears after SW, so that can be used to tag it.... (3 Replies)
Discussion started by: bwrynz1
3 Replies

Featured Tech Videos