Unix: Wie kann vor dem Einfügen geprüft werden, ob ein Tag am Anfang jeder Datei vorhanden ist?

679
Community

Die Frage bezieht sich auf die Frage "Unix: Hinzufügen eines Tags am Anfang jeder Datei?".

Wie kann ich das Tag nur in Dateien einfügen, die das Tag nicht enthalten, wie z. B. <?phpbereits?

0

3 Antworten auf die Frage

2
nagul

Entsprechend modifizierte Version meiner Antwort auf die ursprüngliche Frage :

perl -0777 -p -i -e 's/^/<?php/g unless m/^<\?php/' testfile 

Wenn Sie diesen Befehl -i.bakstatt -imit ausführen, wird eine Sicherung der Originaldateien mit der Erweiterung .bak beibehalten.

Bearbeiten: Die Übereinstimmung von m/<?php/bis wurde aktualisiert m/^<\?php/, damit sie nur mit dem Anfang der Datei übereinstimmt und das ?Zeichen entgeht.

1
grawity
Kopf -n1 Datei | grep -q "^ <? php" || sed -i "1s / ^ / <? php /" -Datei 
0
Richard Hoskins

Sie wollen || (ODER). Wenn die linke Hand wahr ist, stört sie die rechte Hand nicht. z.B

test "$(grep PATTERN FILE)" || sed COMMAND FILE 
Der `test $ ()` Teil wird hier nicht benötigt und bricht sogar den ganzen Test. "grep -q blah ||" reicht aus. grawity vor 14 Jahren 0