我希望获得有关此命令的帮助,因为我在文档中没有找到任何可以涵盖我想要的所有内容的内容。
我有一些全局变量,所以我宁愿让它们远离 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"