使用不同的分隔符连接不同的字段

使用不同的分隔符连接不同的字段

我有一个像这样的制表符分隔文件:

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

pasteprintf

$ printf '%s\n%s\n%s\n' $(cat file) | paste -sd ':-\n' -
chr1:53736473-54175786
chr1:56861276-56876438
chr1:57512145-57512200

相关内容