Erro no formato ao anexar coluna com sed

1

Eu tenho uma tabela e quero adicionar uma coluna contendo, para cada linha, o nome do arquivo em si. Vou postar um exemplo abaixo: Esta é a entrada:

SPATA17 1   217947738
LYPLAL1 1   219383905
FAM47E  4   77192838
SHROOM3 4   77660162
SHROOM3 4   77660731
SHROOM3 4   77662248

E esta é a saída:

SPATA17 1   217947738 file1
LYPLAL1 1   219383905 file1
FAM47E  4   77192838  file1
SHROOM3 4   77660162  file1
SHROOM3 4   77660731  file1
SHROOM3 4   77662248  file1

Eu apliquei a solução muito útil você propôs neste fórum (a solução é a que usa a função sed: for f in file1 file2 file3; do sed -i "s/$/\t$f/" $f; done ), mas tenho alguns problemas. A saída não é conforme o esperado. É assim que eu visualizo com o Vim

SPATA17 1   217947738^M file1
LYPLAL1 1   219383905^M file1
FAM47E  4   77192838^M  file1
SHROOM3 4   77660162^M  file1
SHROOM3 4   77660731^M  file1
SHROOM3 4   77662248^M  file1

Isso é possivelmente um erro porque a nova linha (\ n) precisa ser removida antes? Eu encontrei a solução não funciona para mim.

    
por Kristina Gagalova 13.07.2016 / 14:23

2 respostas

2

Os ^M são \r , "retornos de carro" e, aparentemente, já estavam em seu arquivo original. Você pode removê-los com:

sed -i 's/\r//' file1 file2 file3
    
por 13.07.2016 / 15:34
1

Além de \r , remover o loop pode ser subtitulado por

sed -ni 'P;F' file1 file2 file3 …
^P;F^N;s/\n/\t/p^
    
por 13.07.2016 / 15:39