como substituir o sinal de menos com tr

1

Estou tentando substituir vários símbolos por espaços e achei que tr era o comando certo. Então eu tentei

cat myfile | tr '_[]()-/' ' '

Mas recebo o erro

range-endpoints of ']-/' are in reverse collating sequence order

presumivelmente porque não posso ter um sinal de menos nos caracteres de entrada. Posso realizar isso usando tr ?

    
por Sanjay Manohar 02.12.2015 / 02:04

2 respostas

4

A mensagem aparentemente vem do GNU tr , e talvez seja devido a algum problema com as configurações de localidade. A página info de tr sugere colocar o - por último no conjunto, para evitar confundi-lo como parte de um intervalo , por exemplo,

cat myfile | tr '_[]()/-' ' '
    
por 02.12.2015 / 02:40
1

Com qualquer POSIX tr :

tr '_][()/-' '[ *]' <file

funcionará.

Observe que o uso de [ *] é exigido pelo POSIX. Em:

tr string1 string2

Quando string2 for menor que string1 , um BSD tr preencherá string2 com o último caractere de string2 , então tr '_][()/-' ' ' não tem garantia de funcionar.

    
por 02.12.2015 / 02:58

Tags