¿Cómo eliminar el patrón de cadena usando la terminal de Linux?

¿Cómo eliminar el patrón de cadena usando la terminal de Linux?

Me gustaría eliminar un patrón de cuerdas como este

You should not remove this /*This is the part should remove*/ You
should not remove this

Me gustaría eliminar todo el texto dentro de /*y */.

Respuesta1

En interés de enseñar a un hombre a pescar versus darle un pez a un hombre, lo vinculo a un tutorial sobre expresiones regulares. expresiones-regulares.info/quickstart.html

En caso de que necesite una solución rápida, esto es lo que debe hacer: abra el archivo en vim y escriba lo siguiente:

:s/\/\*.*?\*\/ /g

Se supone que esto reemplaza todas las cadenas que comienzan con /* y terminan */ con un espacio. Primero te vinculé al tutorial de expresiones regulares en caso de que destrozara la expresión que escribí. Lea el tutorial y escriba su propio comando, o haga una copia de seguridad antes de usar la línea anterior.

Respuesta2

Pruebe la siguiente línea sed rápida y sucia:

sed -e 's@/\*.*\*/@@' file

Esto le mostrará el resultado, pero en realidad no modificará el archivo, una vez que lo haya ejecutado y haya confirmado que realiza los cambios que desea, luego colóquelo -iantes de -eindicarle que cambie el archivo en su lugar.

Lo que realmente hace es tomar todo lo que hay entre /*y y lo sustituye por nada (esencialmente eliminándolo), aunque también */obtendrá la porción /*y .*/

Primero le doy el método de no modificación en caso de que elimine mi expresión regular (trabajando con la memoria y sin acceso a sed en la máquina actual para realizar una prueba rápida). También tenga en cuenta que esto no funcionará si el texto que se va a eliminar cruza líneas, ya que sed funciona en cada línea individualmente. Si necesita un programa para trabajar en varias líneas de texto a la vez, necesitará awk o posiblemente perl (ninguno de los cuales conozco lo suficiente como para ofrecer sugerencias de código).

información relacionada