“如何打印”\";在awk中
我需要读取一个文件,忽略一些行,并用它们的制表符分隔符作为字符串打印我想要的行。 输入行:-“如何打印”\";在awk中,awk,Awk,我需要读取一个文件,忽略一些行,并用它们的制表符分隔符作为字符串打印我想要的行。 输入行:- 17579643。CDP=417;DPADJ=1471;RO=417;AO=1054;AF=0.716519374575119;结束=7579660;SVLEN=17;SVTYPE=DEL;SVCONF=高 输出线:- 1\t7579643\t.\tC\t\t.\tDP=417;DPADJ=1471;RO=417;AO=1054;AF=0.716519374575119;结束=7579660;SVLEN
17579643。CDP=417;DPADJ=1471;RO=417;AO=1054;AF=0.716519374575119;结束=7579660;SVLEN=17;SVTYPE=DEL;SVCONF=高代码>
输出线:-
1\t7579643\t.\tC\t\t.\tDP=417;DPADJ=1471;RO=417;AO=1054;AF=0.716519374575119;结束=7579660;SVLEN=17;SVTYPE=DEL;SVCONF=HIGH\t.\t.
这能在awk中实现吗
目前,我有以下几点:-
awk'BEGIN{FS=“\n”}{gsub(/\t/,/\\t/);if($1!~/#/)print$1}”test.vcf
但是我的输出字符串没有正确显示分隔符:-
1075796430.0C00.0.0DP=417;DPADJ=1471;RO=417;AO=1054;AF=0.716519374575119;结束=7579660;SVLEN=17;SVTYPE=DEL;SVCONF=HIGH0.0。
很高兴在普通的bash或sed等中使用它。好吧,您有FS=“\n”
,我在这里不理解它,因此可能会取消此功能,但是:
$ awk 'BEGIN{FS="\t";OFS="\\t"}{$1=$1;print}' file
解释:
awk '
BEGIN {
FS="\t" # tab separated
OFS="\\t" # \t string separated
}
{
$1=$1 # rebuild the record
print # output
}' file
(可能仅更改FS=“\n”
就可以解决您的问题,不要尝试,太多的选项卡需要修复。)awk'{gsub(/\t/,“\\t”);print}是的,不知道我为什么这样做-如果我更改为“\t”和“\\t”,它会按照我的意愿工作,谢谢,比我的更简洁,添加在if语句中,但在其他方面效果很好。谢谢awk'BEGIN{FS=“\t”;OFS=“\\t”}{$1=$1;if($1!~“#”)print}输出。vcf在脚本花费时间重新编译记录之前进行测试是否更有意义<代码>awk'开始{FS=“\t”;OFS=“\\t”}$1~/#/{$1=$1;print}'output.vcf
。您似乎对regexp分隔符和字符串分隔符之间的区别感到困惑。有关它们是什么以及何时使用它们的信息,请参见awk手册页。