ある列の値を別の列の文字列に置き換えるには?

ある列の値を別の列の文字列に置き換えるには?

次のファイルがあります。

head new_fileset_prefix_17.sampleT
ID_1 ID_2 missing
0 0 0
0 fam1000_G1000 0
0 fam1001_G1001 0
0 fam1003_G1003 0
0 fam1005_G1005 0
0 fam1009_G1009 0
...

私は次のような出力を得たいと思います。

ID_1 ID_2 missing
0 0 0
fam1000 G1000 0
fam1001 G1001 0
fam1003 G1003 0
fam1005 G1005 0
fam1009 G1009 0
...

ベストアンサー1

単一の文字列に対して単純なs / old / newを実行するための最良のツールはsedです。

$ sed 's/^[0-9]* \([^_]*\)_/\1 /' file
ID_1 ID_2 missing
0 0 0
fam1000 G1000 0
fam1001 G1001 0
fam1003 G1003 0
fam1005 G1005 0
fam1009 G1009 0

しかし、awkでは、次のようにすることができます。

$ awk '/^[0-9]/ && sub(/_/," ",$2){$0=$2 OFS $3} 1' file
ID_1 ID_2 missing
0 0 0
fam1000 G1000 0
fam1001 G1001 0
fam1003 G1003 0
fam1005 G1005 0
fam1009 G1009 0

おすすめ記事