다음과 같은 파일이 있습니다.
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
답변2
awk 'NR<3 { print; next; }; { split($2,a,"_"); print a[1] " " a[2] " " $3; }' file