Substituir os últimos caracteres em cada linha

3

Eu tenho um arquivo csv com floats terminando em um caractere:

1, 2, 6, 7, "p"
1, 6, 7, 2, "e"

etc.

Gostaria de substituir "p" por 0 e "e" por 1 para uma tarefa de classificação. Ou seja, eu gostaria de:

1, 2, 6, 7, 0
1, 6, 7, 2, 1

Para todas as 8000 linhas no meu arquivo.

Eu tentei:

sed -i 's/"p"$/0' filename.csv

e

sed -i 's"p"$0//' filename.csv

mas não funciona. Como posso substituir vários caracteres em cada linha usando sed?

    
por StatsSorceress 06.03.2017 / 16:35

3 respostas

1
sed 's/"p"$/0/;s/"e"/1/' file.txt
    
por 06.03.2017 / 16:41
8
sed -e 's/"p"$/0/; t' -e 's/"e"$/1/' filename.csv

Com t , nós ramificamos se a primeira substituição for bem-sucedida, evitando que a segunda substituição seja tentada. Esse é um idioma comum para fazer no máximo uma substituição por linha.

    
por 06.03.2017 / 16:39
3

Seu primeiro sed está sem a terminação / . Use sed -i 's/"p"$/0/' filename.csv

    
por 06.03.2017 / 16:38

Tags