首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Awk输出管道作为循环中的参数

将Awk输出管道作为循环中的参数
EN

Unix & Linux用户
提问于 2019-07-11 23:39:47
回答 2查看 1.3K关注 0票数 0

在我使用的第二个程序的参数中,我有一些文件要解析和使用输出:

代码语言:javascript
复制
for file in ./*.vcf.gz; do
        echo "gunzip -c ${file} | awk 'BEGIN{FS=OFS=\"\t\"} NR == FNR{key[\$1]=\$2; next} \$1 in key{\$1=key[\$1]} 1' ./map | cut -f1-6 | sed '1,6d' | vep -i -o ./"${file}"_dnds --compress_output gzip --dir_cache ./" 
done

但是它是在awk命令下落下的

代码语言:javascript
复制
gunzip -c ${file} | awk 'BEGIN{FS=OFS=\"\t\"} NR == FNR{key[\$1]=\$2; next} \$1 in key{\$1=key[\$1]} 1' ./map input

然后,对于进入vep程序的最后一段管道,我也不知道如何使输出进入-i输入,如下所示:

代码语言:javascript
复制
vep -i input -o ./"${file}"_dnds --compress_output gzip --dir_cache ./"

这些是巨大的文本文件。在不读取临时文件的情况下,我如何做到这一点?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2019-07-12 06:55:09

来自EnsEMBL的变量效应预测器默认从标准输入(这里的文件)读取。

这意味着完全排除-i选项(以及它的选项-参数)将使它从管道中读取其输入。

我不知道在管道中您要做什么,但是看起来好像您试图用其他标识符替换一些标识符,从一个单独的文件中读取。在这样做的时候,您可以使用一个awk程序,其中包含无用的反斜杠。awk命令可以编写为

代码语言:javascript
复制
awk 'BEGIN { FS=OFS="\t" } NR == FNR { key[$1]=$2; next} ($1 in key) { $1=key[$1] } 1' map -

-输入文件名使awk在到达标准输入时(在处理名为map的文件后)读取它的标准输入。

awk是一种比管道赋予它更强大的语言,您可以很容易地将cutsed代码集成到其中:

代码语言:javascript
复制
awk 'BEGIN { FS=OFS="\t" } NR == FNR { key[$1]=$2; next} ($1 in key) { $1=key[$1] } FNR > 6 { print $1, $2, $3, $4, $5, $6 }' map -

你的剧本可能看起来像

代码语言:javascript
复制
#!/bin/sh

for file in ./*.vcf.gz; do
    gzip -cd "$file" |
    awk 'BEGIN { FS=OFS="\t" } NR == FNR { key[$1]=$2; next} ($1 in key) { $1=key[$1] } FNR > 6 { print $1, $2, $3, $4, $5, $6 }' map - |
    vep -o "${file}_dnds" --compress_output gzip --dir_cache ./ 
done

(还请注意变量展开的正确双引用)

如果要将.vcf.gz文件名后缀从输出文件的名称中移除,然后将_dnds追加到输出文件的末尾,请使用vep -o "${file%.vcf.gz}_dnds" ...

票数 2
EN

Unix & Linux用户

发布于 2019-07-11 23:51:57

我刚发现问题的第一部分是通过让awk把stdin当作一个常规文件来解决的。

代码语言:javascript
复制
gunzip -c ${file} | awk 'BEGIN{FS=OFS=\"\t\"} NR == FNR{key[\$1]=\$2; next} \$1 in key{\$1=key[\$1]} 1' ./map -

但还是想不出如何将解析的输出输送到

代码语言:javascript
复制
vep -i input -o ./"${file}"_dnds --compress_output gzip --dir_cache ./
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/529703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档