GNU/Linux >> Tutoriales Linux >  >> Linux

Sed One-liner para eliminar todo entre un par de corchetes?

Estoy trabajando con un texto que está lleno de cosas entre corchetes [] que no quiero. Dado que puedo eliminar los corchetes yo mismo, no necesito que lo haga por mí, pero sí necesito uno que elimine todo lo que hay entre ellos.

¿Qué pasa con los paréntesis () en lugar de los corchetes?

Respuesta aceptada:

Reemplazar [some text] por la cadena vacía. Suponiendo que no desea analizar corchetes anidados, el some text no puede contener corchetes.

sed -e 's/[[^][]*]//g'

Tenga en cuenta que en la expresión entre paréntesis [^][] para coincidir con cualquier cosa menos [ o ] , el ] debe venir primero. Normalmente un ] terminaría el conjunto de caracteres, pero si es el primer carácter del conjunto (aquí, después de ^ carácter complementario), el ] representa por sí mismo.

Si desea analizar corchetes anidados, o si el texto entre corchetes puede abarcar varias líneas, sed no es la herramienta adecuada.


Linux
  1. Uso de Sed para buscar y reemplazar una línea entre rangos de patrones

  2. Sed:¿Eliminar todas las apariciones de una cadena excepto la primera?

  3. ¿Diferencias entre Sed en Mac Osx y otros Sed "estándar"?

  4. ¿Guión Vs de una sola línea?

  5. ¿Eliminar todo lo que haya entre la segunda y la penúltima coincidencia?

Cómo eliminar líneas vacías en archivos usando Grep, Sed y Awk

¿Cómo eliminar varias líneas aleatorias de un archivo de texto usando Sed?

¿Escapar de Blackslash en Sed?

¿Cómo eliminar las primeras N líneas de un archivo ASCII usando los comandos de Shell?

Tutorial de Unix Sed:eliminar líneas de archivos usando direcciones y patrones

Usar sed para reemplazar entre un patrón específico