awk 在条件和输出重定向文件中带有变量

awk 在条件和输出重定向文件中带有变量

我希望获得有关此命令的帮助,因为我在文档中没有找到任何可以涵盖我想要的所有内容的内容。

我有一些全局变量,所以我宁愿让它们远离 awk。

    chr="chr10"
    inpfile="exome.bed"
    outfile="exons_chr.bed" -> which should be composed according to chr,
                               so: "exons_" $chr ".bed"

我想以通用形式应用 awk,这样,对于用户输入的任何“chr”和任何“infile”,我可以使用一行命令来根据以下条件创建输出:

    awk '$1=="$chr" $infile > "exons_"$chr".bed"

所以,我也想每次编写输出文件名。当我使用特定值运行它时,它会起作用。更一般地说,如何使其与变量一起使用,以便我可以在脚本中使用它?

有没有办法在更多行中完成它,例如:

    awk ' { if ($1=="$chr") -> copy lines to outfile }' infile

答案1

你有多种选择...

将 shell 变量传递给 awk 并在字符串比较中使用它们并让 shell 创建文件:

awk -v chr="$chr" '$1==chr' "$infile" > "exons_${chr}.bed"

另外让 awk 将输出输出到文件中:

awk -v chr="$chr" '$1==chr { print > "exons_" chr ".bed" }' "$infile"

相关内容