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:
NOTE:
Okey, problem is solved after reading @anishsane’s answer. Since the original file (from wordpress.org/latest.zip) has CRLF (windows) line endings, adding n was breaking the file view. Using “rn” solved the issue:
sed -i "s/'WP_DEBUG', false);/'WP_DEBUG', false);rndefine('WP_MEMORY_LIMIT', '96M');/" $full_path/wp-config.php;
I am not sure why the downvotes. Please explain, so I can clarify the question.
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 hasLF
line endings. Next time when you open it invim
, vim sees mixed line endings,CRLF
&LF
.vim
then decides to interpret it as file withLF
line endings. & allCR
characters are highlighted as^M
.to test, try this:
In short, the issue is not with
sed
, it’s with the original file.Try to convert line ending from DOS format to unix format :
More methods here : http://www.cyberciti.biz/faq/howto-unix-linux-convert-dos-newlines-cr-lf-unix-text-format/
Tested, can’t replicate.
The file does contain windows line endings to begin with in WordPress itself. (see the sample file).
Running the command posted (number 2), results in
which is expected behaviour, which, while not the output in OP’s original question, is exactly what they show they get in their screenshots.