Aby skomentować linie od 2 do 4 bla.conf:
sed -i '2,4 s/^/#/' bla.conf
Aby wykonać polecenie, które chcesz, po prostu umieść powyższe w skrypcie powłoki o nazwie komentarz:
#!/bin/sh
sed -i "$1"' s/^/#/' "$2"
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:
comment 2,4 bla.conf
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ącego foo
do tego zawierającego bar
, użyj:
comment '/foo/,/bar/' bla.conf
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:
sed -i '' '2,4 s/^/#/' bla.conf
I zamień polecenie w skrypcie na:
sed -i '' "$1"' s/^/#/' "$2"
sed
,perl
itd konkretnie A przez terdon!