条件付きおよび出力リダイレクトファイルの変数を持つawk

条件付きおよび出力リダイレクトファイルの変数を持つawk

ドキュメントで私が望むすべてのものを扱うものが見つからなかったので、このコマンドの助けを受けたいと思います。

グローバル変数があるので、awkから遠ざけたい。

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

ユーザーが入力した「chr」と「infile」に対して1行のコマンドを使用して、次のように出力を生成できるように、通常の形式でawkを適用したいと思います。

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

だから、毎回出力ファイル名も書きたいです。特定の値で実行すると機能します。より一般的には、スクリプトで使用できるように変数と連携させるにはどうすればよいですか?

次のように、より多くの行で実行できる方法はありますか?

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

ベストアンサー1

さまざまなオプションがあります...

シェル変数をawkに渡し、それを文字列比較に使用し、シェルにファイルを生成させます。

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

また、awkに出力をファイルとして印刷するようにします。

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

おすすめ記事