TSVファイルの処理にawkを使用したいです。これが私の入力です。
scaffold1 1 100
scaffold1 101 200
scaffold1 201 300
scaffold2 1 100
scaffold2 201 500
scaffold3 10 500
scaffold4 10 300
予想出力:
Feature scaffold1
1 100
101 200
201 300
Feature scaffold2
1 100
01 500
Feature scaffold3
10 500
Feature scaffold4
10 300
uniqコマンドを使用して最初の列を印刷するには、uniqとsortとawkを試しましたが、最初の列の一意の値をすべて印刷し
awk '!seen[$1]++ Input.txt
てから残りの列を印刷できますが、最初の一意の値を印刷したいと思います。 next と残りの列行は上の図のようになります。
これを行う方法があるかどうかを教えてください。
答え1
使用awk
:
awk '!seen[$1]++ {print "Feature",$1} {print $2,$3}' file
Feature scaffold1
1 100
101 200
201 300
Feature scaffold2
1 100
201 500
Feature scaffold3
10 500
Feature scaffold4
10 300
答え2
sedとawkの組み合わせを使ってこれをテストしましたが、うまくいきます。
パスワード:
for o in `awk '{print $1}' example.txt| sort | uniq `; do sed -n "/$o/p" example.txt | sed "s/$o//g" |sed "1i Feature $o"; done
出力
Feature scaffold1
1 100
101 200
201 300
Feature scaffold2
1 100
201 500
Feature scaffold3
10 500
Feature scaffold4
10 300