¿Hay alguna manera de comentar / descomentar un script shell / config / ruby usando la línea de comando?
por ejemplo:
$ comment 14-18 bla.conf
$ uncomment 14-18 bla.conf
esto agregaría o eliminaría el #
inicio de sesión bla.conf
en línea 14
para 18
. Normalmente lo uso sed
, pero debo conocer el contenido de esas líneas y luego hacer una operación de búsqueda y reemplazo, y eso daría un resultado incorrecto cuando hay más de una aguja (y solo queremos reemplazar la N-ésima uno).
shell-script
text-processing
Kokizzu
fuente
fuente
sed
,perl
, etc. Específicamente la A por terdon!Respuestas:
Para comentar las líneas 2 a 4 de bla.conf:
Para hacer el comando que desea, simplemente coloque lo anterior en un script de shell llamado comentario:
Este script se usa igual que el suyo, con la excepción de que la primera y la última línea deben estar separadas por una coma en lugar de un guión. Por ejemplo:
Se puede crear un comando sin comentar de forma análoga.
Característica avanzada
sed
La selección de línea es bastante poderosa. Además de especificar la primera y la última línea por número, también es posible especificarlas mediante una expresión regular. Entonces, si desea ordenar todas las líneas desde la que contienefoo
a la que contienebar
, use:Sistemas BSD (OSX)
Con BSD sed, la
-i
opción necesita un argumento incluso si es solo una cadena vacía. Así, por ejemplo, reemplace el comando superior anterior con:Y, reemplace el comando en el script con:
fuente
'
después de la-i
opción es intencional? No los necesitaba.Con GNU sed (para reemplazar los archivos en su lugar con la
-i
opción):fuente
Puede usar Vim en modo Ex:
g
expresión regular globals
sustituirx
guardar y cerrarfuente
Puede crear un bash_file con funciones para reutilizarlo en sus proyectos
fuente