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 

One Solution collect form web for “awk с переменными в состоянии и в файле перенаправления вывода”

У вас есть различные варианты …

Чтобы передать переменные оболочки в awk и использовать их в сравнении строк и позволить оболочке создать файл:

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

Кроме того, пусть awk делает вывод в файл:

 awk -v chr="$chr" '$1==chr { print > "exons_" chr ".bed" }' "$infile" 
Linux и Unix - лучшая ОС в мире.