Tengo un archivo con líneas de la siguiente manera:
...
... <230948203[234]>, ...
... <234[24]>, ...
..
Me gustaría usar sed para eliminar los caracteres <
,
y >
de cada línea
Intenté usarlo sed 's/<>,//g'
pero no funcionó (no cambió nada). ¿Necesito escapar de estos personajes especiales? ¿Es posible eliminar varios caracteres con un solo sed
comando?
bash-3.2$ echo "<230948203[234]>," | tr '<>,' ' '
-> 230948203 [234] -EDITED Thanks to Paul
tr -d '<>,' ''
(como en la respuesta de Chris Down).tr -d '<>,'
sin '' al final, ¿no?Respuestas:
Con
sed
:Con
tr
:fuente
|
como delimitador un poco confuso.sed 's/[<>]//g'
Es un poco más fácil de leer.|
(y por lo tanto teniendo que escapar de él) mucho menos de lo que tengo que lidiar con literal/
.|
también es a menudo un metacarácter, usado para alternar en algunas sintaxis regexp (aunquesed
en particular lo necesita\|
). Personalmente, si necesito tratar con/
caracteres literales , generalmente lo uso,
como delimitador.printf 'a\nb\nc\n' | sed -n '\|a|,\|b|p'
Prueba este:
sed 's/[<>,]//g'
fuente
|
s dentro[]
. uso's/[<>,]//g'
.sed 's/[<>,]/ /g'
funcionará exactamente bien, excepto que su idea eliminará las barras verticales también.