
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 -i
antes de -e
indicarle 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).