
次のようにタブ区切りのファイルがあります。
chr1 53736473 54175786
chr1 56861276 56876438
chr1 57512145 57512200
次のように3つのフィールド結果をリンクしたいと思います。
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
2つの式を使用できます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