2016-11-11 2 views
1

Um hinzuzufügen, um eine Lizenz für alle PHP-Dateien hinzufügen, würde Ich mag <?php ändern:Linux Sed und Zeilenumbruch Lizenz in PHP-Dateien

<?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 
*/ 

So testete ich mit sed auf eine Datei, für die erste Zeile der Lizenz:

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

es funktioniert, aber es einige ^M am Ende jeder Zeile der Datei index.php fügt hinzu, und ich verstehe nicht, warum.

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

Vielen Dank für Ihre Hilfe

Antwort

1

Sie s/\r//; einfügen

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

Ihre Datei hat Windows-Zeilenende (^M^J), Ihr sed Befehl einen Wagenrücklauf Zeichen mit Ihrem sed Befehl löschen gibt Unix-Zeilenendungen aus (^J), und das Ergebnis ist eine Mischung aus beidem.

Mit anderen Worten, es könnte aussehen wie sed fügen ^M zu jeder Zeile, aber eigentlich diese ^M Charaktere waren schon da. Ihr Editor erkennt die Zeilenenden wahrscheinlich automatisch und die gemischte Datei erzeugt gemischte Ergebnisse.

Sie können die Zeilenende mit einem Werkzeug wie dos2unix konvertieren, oder Sie können mit \r\n statt nur \n Ihrem sed Befehl zur Ausgabe von Windows-Stil Zeilenenden erzählen.

+0

Komisch, ich bin unter Windows 10, aber ich verwende Emacs 25.1.1 als Texteditor. –