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
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.
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
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^
Tags text-processing sed