Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a way to prevent sed from adding carriage return (^M)?

I am trying to add define('WP_MEMORY_LIMIT', '96M'); after the define('WP_DEBUG', false); in a wordpress php file.

Here is what I tried so far:

1-

sed -b -i "/'WP_DEBUG', false);/a define('WP_MEMORY_LIMIT', '96M');" $full_path/wp-config.php;

2-

 sed -i "s/'WP_DEBUG', false);/'WP_DEBUG', false);\ndefine('WP_MEMORY_LIMIT', '96M');/" $full_path/wp-config.php;

The problem with that, all the new lines being replaced with this carriage return char. How can I add a new line after a specific line and do not have this issue ?

define('WP_DEBUG', false);^M
define('WP_MEMORY_LIMIT', '96M');

Using sed (GNU sed) 4.2.2, Ubuntu 16.04

Here is the screenshots for clarify the issue:

enter image description here

enter image description here

like image 578
mirza Avatar asked Sep 21 '25 01:09

mirza


1 Answers

The file originally has CRLF line endings. When you open it in vim editor, vim understands that file has CRLF endings & hides them from user. Any new line/s added via the editor will also have the same line endings as the rest of the file.

When you add a new line via sed, it has LF line endings. Next time when you open it in vim, vim sees mixed line endings, CRLF & LF. vim then decides to interpret it as file with LF line endings. & all CR characters are highlighted as ^M.

to test, try this:

$ printf '%d\r\n' {1..5} > test_endings # This will create a file with CRLF endings.
$ file test_endings 
test_endings: ASCII text, with CRLF line terminators
$ vim test_endings
1
2
3
4
5
~
~
"test_endings" [dos] 5L, 15C        <~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Notice the word DOS here.

$ echo 6 >> test_endings # This will add line with LF line endings.
$ file test_endings 
test_endings: ASCII text, with CRLF, LF line terminators
$ vim test_endings
1^M
2^M
3^M
4^M
5^M
6
~
~
"test_endings" 6L, 17C

In short, the issue is not with sed, it's with the original file.

like image 62
anishsane Avatar answered Sep 22 '25 17:09

anishsane