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
# 1  
Old 07-26-2009
add character to the end of each line in file

hi all
i have 32 lines in file. the length of each line is 82 , i want that in the end of each line , means in postion 83-84 to put two characters 0d(=\015), 0a(=\012)
i want that the 0d will be in postion 83
and the 0a will be in postion 84
in each line of the file

how shall i do it ?

thanks in advanced
# 2  
Old 07-26-2009
if you give a sample input file and desired output, you would get a quick response!!!
# 3  
Old 07-26-2009
0D=13 and 0A=10
Not as you mentioned. ***0d(=\015), 0a(=\012)***
Also they have to be in caps.

When you say you have 32 lines, that means you already have a 0A (or line feed) at the end of the lines.
Else it will be one big string.
What exactly do you need?
# 4  
Old 07-26-2009
Quote:
In Octal:
Carriage Return = 015
Line Feed = 012
If this is a text file and you want to change the unix line terminator (linefeed) into the MSDOS line terminator carriage-return/linefeed there are many ways of doing this.

e.g.

Code:
cat filename | awk 'BEGIN {RS="\n";ORS="\r\n"} {print $0}' > new_filename

Some unixes have utilities for this such as "unix2dos" and "dos2unix".

Depends what you want to do with the file.
# 5  
Old 07-26-2009
Ha.. how could I have missed that? I was thinking of only HEX. Thanks.
Try this:
Code:
sed 's/$/\r\n/' filename > new_filename

# 6  
Old 07-27-2009
Quote:
Originally Posted by naamas03
...
i have 32 lines in file. the length of each line is 82 , i want that in the end of each line , means in postion 83-84 to put two characters 0d(=\015), 0a(=\012)
...
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
# 7  
Old 07-27-2009
Here's another way using awk:
Code:
# od -bc < data.file
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   101 102 103 104 105 106 055 114 111 116 105 072 060 060 064 012
           A   B   C   D   E   F   -   L   I   N   E   :   0   0   4  \n
0000100   101 102 103 104 105 106 055 114 111 116 105 072 060 060 065 012
           A   B   C   D   E   F   -   L   I   N   E   :   0   0   5  \n
0000120

# awk '{RS="\n";ORS="\r\n"}1' data.file  | od -bc
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 101 102 103 104 105 106 055 114 111 116 105 072 060
           3  \r  \n   A   B   C   D   E   F   -   L   I   N   E   :   0
0000100   060 064 015 012 101 102 103 104 105 106 055 114 111 116 105 072
           0   4  \r  \n   A   B   C   D   E   F   -   L   I   N   E   :
0000120   060 060 065 015 012
           0   0   5  \r  \n
0000125

# awk '{RS="\n";ORS="\r\n"}1' data.file  > data.file.new

# od -bc < data.file.new
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 101 102 103 104 105 106 055 114 111 116 105 072 060
           3  \r  \n   A   B   C   D   E   F   -   L   I   N   E   :   0
0000100   060 064 015 012 101 102 103 104 105 106 055 114 111 116 105 072
           0   4  \r  \n   A   B   C   D   E   F   -   L   I   N   E   :
0000120   060 060 065 015 012
           0   0   5  \r  \n
0000125

# cat data.file.new
ABCDEF-LINE:001
ABCDEF-LINE:002
ABCDEF-LINE:003
ABCDEF-LINE:004
ABCDEF-LINE:005


Previous Thread | Next Thread
Test Your Knowledge in Computers #464
Difficulty: Medium
chrony was developed and written in Python.
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