Czy istnieje sposób na komentowanie / odkomentowanie skryptu powłoki / config / ruby za pomocą wiersza poleceń?
na przykład:
$ comment 14-18 bla.conf
$ uncomment 14-18 bla.conf
spowoduje to dodanie lub usunięcie #
wpisu bla.conf
w trybie online 14
do 18
. Zwykle używam sed
, ale muszę znać zawartość tych wierszy, a następnie wykonać operację znajdowania-zamiany, co dałoby zły wynik, gdy istnieje więcej niż jedna igła (a my chcemy tylko wymienić N-ty jeden).
shell-script
text-processing
Kokizzu
źródło
źródło
sed
,perl
itd konkretnie A przez terdon!Odpowiedzi:
Aby skomentować linie od 2 do 4 bla.conf:
Aby wykonać polecenie, które chcesz, po prostu umieść powyższe w skrypcie powłoki o nazwie komentarz:
Ten skrypt jest używany tak samo jak twój, z tym wyjątkiem, że pierwszy i ostatni wiersz należy oddzielić przecinkiem, a nie myślnikiem. Na przykład:
Polecenie odkomentowania można utworzyć analogicznie.
Zaawansowana funkcja
sed
Wybór linii jest dość potężny. Oprócz określenia pierwszego i ostatniego wiersza według numeru, można również określić je za pomocą wyrażenia regularnego. Tak więc, jeśli chcesz sterować wszystkimi liniami od tego zawierającegofoo
do tego zawierającegobar
, użyj:Systemy BSD (OSX)
W przypadku BSD sed
-i
opcja wymaga argumentu, nawet jeśli jest to tylko pusty ciąg. Dlatego na przykład zamień górne polecenie powyżej na:I zamień polecenie w skrypcie na:
źródło
'
po-i
opcji jest zamierzone? Nie potrzebowałem ich.Z GNU sed (aby zastąpić pliki na miejscu
-i
opcją):źródło
Możesz używać Vima w trybie Ex:
g
regex globalnys
zastąpićx
Zapisz i zamknijźródło
Możesz utworzyć plik bash z funkcjami, aby użyć go ponownie w swoich projektach
źródło