Eu tenho um arquivo com linhas da seguinte maneira:
...
... <230948203[234]>, ...
... <234[24]>, ...
..
Eu gostaria de usar o sed para remover os caracteres <
,
e >
de todas as linhas
Eu tentei usar, sed 's/<>,//g'
mas não funcionou (não mudou nada). Preciso escapar desses caracteres especiais. É possível excluir vários caracteres usando um único sed
comando?
bash-3.2$ echo "<230948203[234]>," | tr '<>,' ' '
-> 230948203 [234] -EDITED Thanks to Paul
tr -d '<>,' ''
(como na resposta de Chris Down).tr -d '<>,'
sem '' no final, não?Respostas:
Com
sed
:Com
tr
:fonte
|
um delimitador um pouco confuso.sed 's/[<>]//g'
é um pouco mais fácil de ler.|
(e, portanto, tendo que escapar dela) muito menos do que tenho que lidar com literal/
.|
também costuma ser um meta-caractere, usado para alternância em algumas sintaxes de expressão regular (emborased
em particular seja necessário\|
). Pessoalmente, se eu precisar lidar com/
caracteres literais , geralmente o uso,
como delimitador.printf 'a\nb\nc\n' | sed -n '\|a|,\|b|p'
Tente este:
sed 's/[<>,]//g'
fonte
|
s dentro[]
. use's/[<>,]//g'
.sed 's/[<>,]/ /g'
funcionará exatamente como bem, exceto que sua ideia também removerá barras verticais.