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:


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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With