Gibt es eine Möglichkeit, ein Shell- / Konfigurations- / Ruby-Skript über die Befehlszeile zu kommentieren / zu kommentieren?
zum Beispiel:
$ comment 14-18 bla.conf
$ uncomment 14-18 bla.conf
Dies würde hinzufügen oder entfernen #
anmelden bla.conf
online 14
zu 18
. Normalerweise benutze ich sed
, aber ich muss den Inhalt dieser Zeilen kennen und dann eine Find-Replace-Operation ausführen, und das würde zu einem falschen Ergebnis führen, wenn es mehr als eine Nadel gibt (und wir wollen nur die N-te ersetzen eins).
shell-script
text-processing
Kokizzu
quelle
quelle
sed
,perl
etc. Insbesondere die A von terdon!Antworten:
So kommentieren Sie die Zeilen 2 bis 4 von bla.conf:
Um den gewünschten Befehl zu erstellen, fügen Sie den obigen Befehl einfach in ein Shell-Skript mit dem Namen comment ein:
Dieses Skript wird genauso wie Ihr Skript verwendet, mit der Ausnahme, dass die erste und die letzte Zeile durch ein Komma und nicht durch einen Bindestrich getrennt werden sollen. Beispielsweise:
Ein Kommentarbefehl kann analog erstellt werden.
Erweiterte Funktion
sed
Die Zeilenauswahl ist ziemlich mächtig. Neben der Angabe der ersten und letzten Zeile nach Nummer können diese auch durch einen regulären Ausdruck angegeben werden. Wenn Sie also alle Zeilen von der einen mitfoo
bis zur anderen mit befehlen möchtenbar
, verwenden Sie:BSD (OSX) Systeme
Bei BSD sed
-i
benötigt die Option ein Argument, auch wenn es sich nur um eine leere Zeichenfolge handelt. Ersetzen Sie daher zum Beispiel den obigen Befehl top durch:Und ersetzen Sie den Befehl im Skript durch:
quelle
'
nach der-i
Option beabsichtigt? Brauchte sie nichtMit GNU sed (um die vorhandenen Dateien durch die
-i
Option zu ersetzen ):quelle
Sie können Vim im Ex-Modus verwenden:
g
globaler regulärer Ausdrucks
Ersatzx
speichern und schließenquelle
Sie können eine bash_file mit Funktionen erstellen, um sie in Ihren Projekten wiederzuverwenden
quelle