我试图在WordPress的PHP文件中的define('WP_DEBUG', false);
后添加define('WP_MEMORY_LIMIT', '96M');
。
以下是我到目前为止所尝试的:
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;
问题是,所有的新行都被这个回车符替换了。如何在特定行后添加新行而不会出现此问题?
define('WP_DEBUG', false);^M
define('WP_MEMORY_LIMIT', '96M');
Using sed(GNU sed)4.2.2,Ubuntu 16.04
以下是截图以澄清问题:
4条答案
按热度按时间nszi6y051#
该文件最初具有CRLF行结尾。当您在
vim
编辑器中打开它时,Vim会理解该文件具有CRLF结尾并对用户隐藏它们。通过编辑器添加的任何新行也将具有与文件其余部分相同的行结束符。当您通过
sed
添加新行时,它具有LF
行尾。下次在vim
中打开它时,Vim会看到混合的行结尾,CRLF
和LF
。然后vim
决定将其解释为具有LF
行结尾的文件。&所有CR
字符都突出显示为^M
。要测试,请尝试以下操作:
简而言之,问题不在于
sed
,而在于原始文件。llew8vvj2#
尝试将行尾从DOS格式转换为Unix:
更多方法:http://www.cyberciti.biz/faq/howto-unix-linux-convert-dos-newlines-cr-lf-unix-text-format/
pvcm50d13#
使用sed后,运行dos2unix转换为unix,它将删除“^M”。
6kkfgxo04#
已测试,无法复制。
该文件确实包含WordPress本身开始的windows行结束符。(参见the sample file)。
运行posted命令(编号2),结果为
这是预期的行为,虽然不是OP最初问题中的输出,但正是他们在屏幕截图中显示的结果。