SED - líneas incommentantes en un archivo de texto
- 4677
- 729
- Mateo Pantoja
Sed, corto para "Editor de transmisión", es una poderosa herramienta de procesamiento de texto que se usa comúnmente en los sistemas Linux y Unix. Puede realizar una amplia gama de operaciones en archivos de texto, que incluyen buscar, reemplazar, insertar y eliminar líneas. Una tarea común que los usuarios a menudo deben realizar con SED son las líneas incommentadoras en un archivo de texto. En este artículo, proporcionaremos una guía para dominar a SED y usarlo en líneas de desenfrenado en archivos de texto.
Antes de sumergirnos en los detalles del uso de líneas SED a desenfrenadas, primero definamos lo que queremos decir con "incomplementación."En la programación, un comentario es una línea de código que el compilador o intérprete ignora. Se utiliza para agregar notas, explicaciones u otra información al código sin afectar su funcionalidad. Los comentarios generalmente se denotan por un personaje especial o secuencia de caracteres, como "#" en scripts de shell, "//" en c ++, o "/ * */" en Java.
Líneas complementarias en archivos de texto
Descoplar una línea en un archivo de texto significa eliminar los caracteres de comentarios y hacer que la línea activa o ejecutable. Por ejemplo, considere el siguiente script de shell:
#!/bin/bash # Este es un comentario # echo "Hola, mundo!"1234 | #!/bin/bash # Este es un comentario # echo "Hola, mundo!" |
En este guión, la primera línea se llama "el asunto" y le dice al sistema qué intérprete usar para ejecutar el script. La segunda y tercera líneas son comentarios que proporcionan información sobre el script pero no se ejecutan. La cuarta línea es el comando real que imprime "Hola, mundo!"A la consola.
Si quisiéramos desenchufar la tercera línea y hacerlo ejecutable, eliminaríamos el carácter "#" antes del comando "Echo":
#!/bin/bash # Este es un comentario echo "Hola, mundo!"1234 | #!/bin/bash # esto es un commenteco "Hola, mundo!" |
Ahora que entendemos el concepto de líneas incommentadoras, veamos cómo podemos usar SED para lograr esta tarea. SED utiliza expresiones regulares, o regex, para que coincidan con los patrones en los archivos de texto y les aplique transformaciones. Para desenchufar una línea, necesitamos buscar los personajes de comentarios al comienzo de la línea y eliminarlos.
Aquí está la sintaxis básica para usar líneas SED a Uncomment en un archivo de texto:
sed 's/^#//' InputFile> OutputFile1 | sed 's/^#//' InputFile> OutputFile |
Desglosemos este comando:
sed
es el comando sed mismos
significa "sustituto", que es la operación que queremos realizar/^#/
es el patrón regex que queremos coincidir. El personaje "^" significa "comienzo de la línea" y "#" es el personaje de comentarios que queremos eliminar.//
es la cadena de reemplazo, que está vacía en este caso. Esto significa que estamos eliminando los personajes de los comentarios y no los reemplazamos con nada.fichero de entrada
es el nombre del archivo que queremos modificar>
es un operador de redirección que envía la salida a un archivo nuevo en lugar de la consolaarchivo de salida
es el nombre del nuevo archivo que contendrá la versión no comentada del archivo de entrada
Aquí hay un ejemplo de cómo usaríamos este comando para las líneas de desenfrenado en un script de shell:
script 's/^#//'.sh> no commentado.mierda1 | script 's/^#//'.sh> no commentado.mierda |
Este comando leerá el contenido de guion.mierda, eliminar el "#" personajes de cualquier línea que comience con ellos y escriba el resultado en un nuevo archivo llamado Uncommented.mierda.
Tenga en cuenta que este comando solo eliminará los caracteres de comentarios desde el comienzo de la línea. Si hay personajes de comentarios en el medio de una línea, no se verán afectados. Para eliminar todos los caracteres de comentarios en un archivo, podemos modificar el patrón regex para que coincida con cualquier ocurrencia de "#" y eliminarlo:
SED 'S/#//' InputFile> OutputFile1 | SED 'S/#//' InputFile> OutputFile |
Este comando eliminará todo "#" personajes en el archivo, independientemente de dónde aparezcan.
Vale la pena señalar que el comando SED que hemos mostrado hasta ahora modificará el archivo de entrada directamente. Si desea crear un nuevo archivo con la versión sin comisión del archivo de entrada, puede usar el "> OutputFile" Sintaxis, como hemos hecho en los ejemplos anteriores.
Si desea modificar el archivo de entrada directamente, puede usar el "-i" opción, que significa "en el lugar":
SED -I 'S/^#//' InputFile1 | SED -I 'S/^#//' InputFile |
Este comando eliminará el "#" caracteres del archivo de entrada en sí, sin crear un nuevo archivo.
Otra opción útil en SED es el "-mi" Opción, que le permite especificar múltiples comandos SED en una sola línea de comandos. Esto puede ser útil si desea realizar múltiples transformaciones en un archivo:
sed -e 's/^#//' -e 's/^ *//' InputFile> OutputFile1 | sed -e 's/^#//' -e 's/^ *//' InputFile> OutputFile |
Este comando eliminará primero el "#"Caracteres de cualquier línea que comience con ellos y luego elimine los espacios que aparezcan al comienzo de cada línea.
Conclusión
En conclusión, Mastering SED es una habilidad esencial para cualquier usuario de Linux o UNIX que trabaje con archivos de texto. El uso de líneas de SED a desenfrenado en un archivo es una tarea común que se puede lograr fácilmente con el "S/^#//" dominio. Al combinar este comando con otras características SED, puede realizar potentes operaciones de procesamiento de texto en sus archivos y automatizar muchas tareas tediosas.