如果字段中有点,则打印列标题的awk
在下面以如果字段中有点,则打印列标题的awk,awk,Awk,在下面以选项卡分隔的文件中,我试图使用awk打印字段的标题,如果它们包含单个(点)。其他字段不应包含,我将使用另一个awk来检测这些数据类型(alpha或integer,可以是十进制)。下面的代码看起来很接近,但没有按预期工作。谢谢:) 文件 Index HGMD Sanger Classification Pop 1 . . VUS .36 awk awk -F'\t' '$2 && $3 ~ /./ && FNR ==
选项卡分隔的文件中,我试图使用awk
打印字段的标题,如果它们包含单个
(点)。其他字段不应包含
,我将使用另一个awk
来检测这些数据类型(alpha或integer,可以是十进制)。下面的代码看起来很接近,但没有按预期工作。谢谢:)
文件
Index HGMD Sanger Classification Pop
1 . . VUS .36
awk
awk -F'\t' '$2 && $3 ~ /./ && FNR == 1 {printf "dot detected in fields: ORS $0"}' file
Index HGMD Sanger Classification
所需输出
dot detected in fields: HGMD, Sanger
使用Awk
,如下所示
awk 'BEGIN{FS="\t"}NR==1{for(i=1;i<=NF;i++) header[i]=$i}{for(i=1;i<=NF;i++) { if (match($i,/^\.$/)) { print header[i] } } }' file
HGMD
Sanger
awk'BEGIN{FS=“\t”}NR==1{for(i=1;i使用awk
,如下所示
awk 'BEGIN{FS="\t"}NR==1{for(i=1;i<=NF;i++) header[i]=$i}{for(i=1;i<=NF;i++) { if (match($i,/^\.$/)) { print header[i] } } }' file
HGMD
Sanger
awk'BEGIN{FS=“\t”}NR==1{for(i=1;i假设您希望列的标题在任何一行上都有一个点(HGMD
和Sanger
此处):
一种解决办法是:
awk -F'\t' 'NR==1 {for (i=0 ; i <= NF ; i++) headers[i] = $i; } # 1
NR!=1 {for (i=0 ; i <= NF ; i++) if ($i == ".") dots[i] = 1} # 2
END { printf "Dots in fields: ";
for (x in headers) if (dots[x]) printf "%s ", headers[x]; # 3
printf "\n"
} ' file
awk-F'\t''NR==1{for(i=0;i假设您希望列的标题在任何一行上有一个点(HGMD
和Sanger
):
一种解决办法是:
awk -F'\t' 'NR==1 {for (i=0 ; i <= NF ; i++) headers[i] = $i; } # 1
NR!=1 {for (i=0 ; i <= NF ; i++) if ($i == ".") dots[i] = 1} # 2
END { printf "Dots in fields: ";
for (x in headers) if (dots[x]) printf "%s ", headers[x]; # 3
printf "\n"
} ' file
awk-F'\t''NR==1{for(i=0;iawk'
NR==1{split($0,hdr);next}
{
对于(i=1;iawk'
NR==1{split($0,hdr);next}
{
for(i=1;i.36
是一条记录还是两条记录?对不起,这是两条记录。基本上,
本身将是一个空值。.36是一个十进制数,表示36%
。谢谢:)..36
是一条记录还是两条记录?很抱歉,这是两条记录。基本上,
本身将是一个空值。.36是一个十进制数,表示36%
。谢谢:)。与其使用匹配,不如使用if($i=>)…
稍微简单一点。谢谢你们的帮助和解释:)。与其使用匹配也许如果($i=>)…
稍微简单一点。谢谢你们的帮助和解释:)。