com sed:
$ sed 's/\(.*\)\t\(.*\)\t/:-/' file
chr1:53736473-54175786
chr1:56861276-56876438
chr1:57512145-57512200
printf:
printf "%s:%s-%s\n" $(< file)
chr1:53736473-54175786
chr1:56861276-56876438
chr1:57512145-57512200
Eu tenho um arquivo delimitado por tabulações como este:
chr1 53736473 54175786
chr1 56861276 56876438
chr1 57512145 57512200
Eu quero concatenar os três campos com o seguinte resultado:
chr1:53736473-54175786
chr1:56861276-56876438
chr1:57512145-57512200
Eu tentei com paste -d ':-' file
, o que aparentemente não funcionou. Alguém poderia ajudar?
O ideal seria com o comando unix simples, eu sei que é bastante fácil com uma linguagem superior.
Para o seu exemplo,
awk '{print $1":"$2"-"$3}' your_file
funcionará, mas pressupõe que você sempre terá exatamente 3 campos.
Você pode usar duas expressões sed
:
sed -e "s/\t/,/" -e "s/\t/-/" your_file
Com paste
e printf
:
$ printf '%s\n%s\n%s\n' $(cat file) | paste -sd ':-\n' -
chr1:53736473-54175786
chr1:56861276-56876438
chr1:57512145-57512200
Tags text-processing paste