我有一个像这样的制表符分隔文件:
chr1 53736473 54175786
chr1 56861276 56876438
chr1 57512145 57512200
我想像这样连接三个字段结果:
chr1:53736473-54175786
chr1:56861276-56876438
chr1:57512145-57512200
我尝试过paste -d ':-' file
,这显然不起作用。有人可以帮忙吗?
理想情况下可以使用简单的 unix 命令,我知道使用高级语言相当容易。
答案1
使用 sed:
$ sed 's/\(.*\)\t\(.*\)\t/\1:\2-/' file
chr1:53736473-54175786
chr1:56861276-56876438
chr1:57512145-57512200
打印:
printf "%s:%s-%s\n" $(< file)
chr1:53736473-54175786
chr1:56861276-56876438
chr1:57512145-57512200
答案2
对于你的例子,
awk '{print $1":"$2"-"$3}' your_file
会起作用,但它假设你总是有 3 个字段。
答案3
您可以使用两个sed
表达式:
sed -e "s/\t/,/" -e "s/\t/-/" your_file
答案4
与paste
和printf
:
$ printf '%s\n%s\n%s\n' $(cat file) | paste -sd ':-\n' -
chr1:53736473-54175786
chr1:56861276-56876438
chr1:57512145-57512200