为了向所有php文件添加许可证,我想通过以下方式更改<?php
:
<?php
/*
* Copyright (c) 2016-2017 My Project
* This file is part of My Project 1.2, more information at https://websitemyproject.com
* Licence another line
* Last line of licence
*/
所以我在sed上测试了一个文件,第一行是许可证:
sed -i -- 's/<?php/<?php\n\/*\n * Copyright(c) 2016-2017 My Project \n *\/ /g' index.php
它有效,但它在文件index.php的每一行的末尾添加了一些^M
,我不明白为什么。
<?php
/*
* Copyright(c) 2016-2017 My Project
*/ ^M
^M
^M
$page = 'home';^M
^M
感谢您的帮助
答案 0 :(得分:1)
您可以使用sed命令
插入s/\r//;
来删除回车字符
sed -i -- 's/\r//;s/<?php/<?php\n\/*\n * Copyright(c) 2016-2017 My Project \n *\/ /g' index.php
答案 1 :(得分:0)
您的文件有Windows行结尾(^M^J
),您的sed
命令正在输出Unix行结尾(^J
),结果是两者的混合。
换句话说,它可能看起来,就像sed
正在为每一行添加^M
,但实际上那些^M
字符已经存在。您的编辑器可能会自动检测行结尾,混合文件会产生混合结果。
您可以使用dos2unix
之类的工具转换行结尾,或者您可以使用sed
而不是\r\n
告诉您的\n
命令输出Windows样式行结尾}。