2016-11-11 53 views
1

爲了一個許可證添加到所有的PHP文件添加許可證,我想通過改變<?php的Linux桑達和換行符到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 

它的工作原理,但它增加了一些^M在index.php文件的每一行的結束,我不明白爲什麼。

<?php 
/* 
* Copyright(c) 2016-2017 My Project 
*/ ^M 
^M 
^M 
$page = 'home';^M 
^M 

謝謝您的幫助

回答

1

可以插入s/\r//;刪除回車字符與你的sed命令

sed -i -- 's/\r//;s/<?php/<?php\n\/*\n * Copyright(c) 2016-2017 My Project \n *\/ /g' index.php 
0

您的文件的Windows行尾(^M^J),您sed命令輸出Unix行尾(^J),結果是兩者的混合。

換句話說,它可能看起來sed添加^M每行,但實際上這些^M人物已經在那裏。您的編輯器可能會自動檢測行結束符,並且混合文件產生混合結果。

您可以使用的工具,像dos2unix轉換線的結局,或者您可以通過使用\r\n而不是隻\n告訴sed命令輸出的Windows風格的行尾。

+0

奇怪的是,我在Windows 10下,但我使用emacs 25.1.1作爲文本編輯器。 –