このようなファイルがあります。
SRR959756.1081725 1 RNU2-54P:112:133:hsa-miR-1246
SRR959756.1162547 1 RNU2-54P:112:133:hsa-miR-1246
SRR959756.128602 2 RNU2-37P:85:108:hsa-miR-877-3p RNU2-59P:99:122:hsa-miR-877-3p
これはタブ区切りのファイルで、次のような結果が必要です。
SRR959756.1081725 1 RNU2-54P:112:133:hsa-miR-1246
SRR959756.1162547 1 RNU2-54P:112:133:hsa-miR-1246
SRR959756.128602 2 RNU2-37P:85:108:hsa-miR-877-3p
SRR959756.128602 2 RNU2-59P:99:122:hsa-miR-877-3p
3行目と同様に、3列目と4列目があります。ただし、常に最初と2番目の列、3番目の列、次の行に1番目と2番目の列、4番目の列を印刷する必要があります。
awkでどうすればいいですか?
ベストアンサー1
$ awk -v OFS='\t' '{for (i=3;i<=NF;i++)print $1,$2,$i}' file
SRR959756.1081725 1 RNU2-54P:112:133:hsa-miR-1246
SRR959756.1162547 1 RNU2-54P:112:133:hsa-miR-1246
SRR959756.128602 2 RNU2-37P:85:108:hsa-miR-877-3p
SRR959756.128602 2 RNU2-59P:99:122:hsa-miR-877-3p
どのように動作しますか?
-v OFS='\t'
これにより、出力フィールド区切り記号AKAがタブに
OFS
設定されます。for (i=3;i<=NF;i++) print $1,$2,$i
これにより、列 3 以降のすべての列から始まり、ループが実行され、列 1 と列 2 の前の行に印刷されます。