gau*_*wal 3 sed awk text-processing bioinformatics
#CHROM POS REF ALT ../S101_sorted.bam ../S102_sorted.bam ../S105_sorted.bam ../S107_sorted.bam ../S113_sorted.bam ../S114_sorted.bam ../S115_sorted.bam ../S
Aradu.A01 296611 T C T T T T T T T T T T T T T T T/C T T/C T T T T
Aradu.A01 326689 T C T/C T T T T/C T T T T/C T/C T T T T T T T T/C T/C T T
Aradu.A01 615910 T G T T T T T T T T T T T T T T T T T T T T T
Aradu.A01 661394 T A T T T T T T/A T T T T T T T T T T T T T T T
Aradu.A01 941674 C T C C/T C C C/T C C C C C C C C C C C C C C C C
Aradu.A01 942064 C T C/T C/T C/T C/T C/T C C C/T C C/T C/T C C C/T C/T C C C C C/T C/T
Aradu.A01 954858 G A G/A G G G G G G G G G G G G G G G G/A G G G G
Aradu.A01 1196780 C A C/A C C C C C C C C C C C/A C C C/A C C C C C C
Run Code Online (Sandbox Code Playgroud)
我有一个上述格式的文件,我正在尝试按_
原样打印由其余列分隔的前两列。我尝试了以下awk
脚本螺母它不返回任何输出。
awk '{if (NR>1) print $1"_"$2; for(i=3;i<NF;i++) printf "\t", $i}' input_file > out_file.
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议我在这里做错了什么吗?
要将前两列之间的空格更改为下划线,我建议sed
:
sed -e 's/[\t ]\+/_/'
Run Code Online (Sandbox Code Playgroud)
如果您需要忽略标题行:
sed -e '/^#/! s/[\t ]\+/_/'
Run Code Online (Sandbox Code Playgroud)
或者,对于更一般的情况(标题可能以任何字符开头;\t
仅适用于gnu sed
)
sed -E '1! s/[[:blank:]]+/_/'
Run Code Online (Sandbox Code Playgroud)
至于关于您的awk
代码的问题,第一个print
, 应该可能是 aprintf
以免它打印不合时宜的换行符。