
Aporte
[*] 111, 22, 33, 44
Producción
111,22,33,44
Usando sed
el comando sed 's/^\[\*\][[:space:]]*//' file
pudimos mostrar la salida, lo 111, 22, 33, 44
que significa que todavía hay espacio.
Entonces ¿cuál es el comando correcto sed
?
Respuesta1
La respuesta corta es que esto debería hacer lo que quieres:
sed 's/[][*]\|[[:space:]]//g'
Pruébelo así:
echo '[*] 111, 22, 33, 44' | sed 's/[][*]\|[[:space:]]//g'
Producción:
111,22,33,44
Sigue una explicación más larga.
El ingrediente clave que le faltaba a tu expresión era el uso deEl g
comandopara realizar la sustitución global. Sin este comando, solo se reemplazará la primera coincidencia de cada línea.
La parte más contraria a la intuición (en mi opinión) de mi solución es cómo incluir los corchetes dentro de una clase de caracteres. Para ello nos referimos a lamanual de sed:
‘]’ ends the bracket expression if it’s not the first list item. So, if you want to make the ‘]’ character a list item, you must put it first.
Para obtener más información sobre ese tema, consulte la siguiente publicación sobre SeverFault:
Alternativamente, podría haber tomado su expresión y canalizarla a otro sed
comando, por ejemplo:
echo '[*] 111, 22, 33, 44' \
| sed 's/^\[\*\]//' \
| sed 's/[[:space:]]//g'