Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“如何打印”\";在awk中_Awk - Fatal编程技术网

“如何打印”\";在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手册页。