Apare últimos caracteres de uma linha

0

Eu tenho um arquivo csv e as linhas têm tamanho diferente. Mas todos terminam com um número cercado por um par de chaves. Por exemplo,

........{5}
........{16}

Eu gostaria de remover o número e as chaves ou talvez substituí-las por aspas duplas, por exemplo. O resultado poderia ser

........
........

ou

........"
........"

Eu só encontrei solução para linhas com comprimento fixo ou com a mesma string no final da linha.

Alguma ideia?

    
por Sigur 11.06.2014 / 20:13

2 respostas

5

Para remover, com GNU sed :

sed 's/{[0-9]\+}$//' file.csv

O equivalente padrão:

sed 's/{[0-9]\{1,\}}$//' file.csv

Ou:

sed 's/{[0-9][0-9]*}$//' file.csv

Substitua // por /"/ se você quiser substituir por " em vez de excluir.

    
por 11.06.2014 / 20:17
1

Tente este comando GNU sed para substituir o último {..} por doublequotes,

sed -r 's/^(.*)\{.*\}$/"/g' file

Exemplo:

$ cat file
........{5}
........{16}
avhjjk{23}

$ sed -r 's/^(.*)\{.*\}$/"/g' file
........"
........"
avhjjk"

E até awk ,

$ awk '{gsub (/{.*}$/,"\""); print}' file
........"
........"
avhjjk"
    
por 11.06.2014 / 20:17