Dan*_*l R 3 shell-script text-processing bioinformatics
我有以下问题:
我的数据表看起来像这样
AAAGGGTTT AAAGGG
AAAGGGCCC GGGCCC
Run Code Online (Sandbox Code Playgroud)
我想像这样在第三行中显示两个序列之间的差异
AAAGGGTTT AAAGGG TTT
AAAGGGCCC GGGCCC AAA
Run Code Online (Sandbox Code Playgroud)
我试过的是使用差异。我提取了文件(f1.txt 和 f2.txt)中的各个序列并对其进行了格式化,以便可以将它们与 diff 逐行比较,这造成了它仅在序列的开头相似时才起作用的问题(数据表的第 1 行) )。
awk '{gsub(".","&\n");printf "%s",$0}' < f1.txt >f1a.txt
awk '{gsub(".","&\n");printf "%s",$0}' < f2.txt >f2a.txt
diff -y f1a.txt f2a.txt
Run Code Online (Sandbox Code Playgroud)
有没有人知道如何实现所需的输出?
这是你追求的吗?
awk '{$3=$1;sub($2,"",$3)}1' file
Run Code Online (Sandbox Code Playgroud)
$3=$1
将第一个字段复制到第三个字段并
sub($2,"",$3)
在第三个字段中查找第二个字段。如果匹配,则sub
用第三个字段中的空字符串替换匹配的字符串。
将1
在最后打印出结果。它相当于一个{print}
语句,因此您可以将其重写为{$3=$1;sub($2,"",$3);print}
.
结果:
AAAGGGTTT AAAGGG TTT
AAAGGGCCC GGGCCC AAA
Run Code Online (Sandbox Code Playgroud)