我想转换A T C G
中包含字母A B
的文件
为此,我有两个文件(file1和file2)。
file1的前2行和10列(我需要转换的那一行)是:
G G G G A A C C A G
G A G A A A C C G G
文件头2(第1,2和4列在这里没用):
10000135098 A G 1
10000267940 A G 2
10000305793 A G 3
10000393248 A C 4
10000434180 A G 5
10000471078 A G 6
10000516404 A G 7
10000533815 A G 8
10000571340 A G 9
10000845494 A G 10
我试着这样做:
awk 'BEGIN {FS=" ";OFS=" "} {$1=$1; print}' file1 | awk 'BEGIN {FS="";OFS=""} NR==FNR {for (i=1;i<=NF;i++) {a[$3]="A";next} {if($i in a) print a[$3]; else print "B"}}' file2 -
但没有任何反应。
理想的输出是:
A A A B B B B B B A
A B A B B B B B A A
有什么建议吗?
答案 0 :(得分:2)
我不知道你想要实现什么,你的代码对我没有任何意义但是这个给定输入的awk似乎产生了正确的输出:
$ awk '
NR==FNR { # hash $3 of file2 use FNR as key
a[FNR]=$3
next
}
{
for(i=1;i<=NF;i++) # for each char in file1
$i=($i==a[i]?"A":"B") # replace with A or B depending on
}1' file2 file1
A A A B B B B B B A
A B A B B B B B A A