タブ区切りのファイルがあります。ユーザーが列番号と番号を指定できるように、AWKを使用してファイルをフィルタリングしたいと思います。これにより、スクリプトは、指定された列の値がその番号より大きいファイル(およびヘッダー)の行のみを返します。 。たとえば、列3としきい値0.28が必要な場合は、次のファイルを使用したいと思います。
Col1 Col2 Col3 Col4 Col5
... ... 0.12 ... ...
... ... 0.323 ... ...
... ... 0.4123 ... ...
... ... 0.002 ... ...
... ... 0.896 ... ...
そして得る
Col1 Col2 Col3 Col4 Col5
... ... 0.323 ... ...
... ... 0.4123 ... ...
... ... 0.896 ... ...
私は次のスクリプトを試しました
#!/bin/bash
#For testing
echo $1
echo $2
echo $3
awk -v col="$1" -v val="$2" '$col > $val' filename
を実行しようとすると、bash script.sh 3 0.28 filename
ファイルの行は印刷されません。 echoコマンドのため、3、0.28、ファイル名のみが出力されます。
ただし、表示されるようにスクリプトを変更すると、
awk -v col="$1" -v val="$2" '$col > 0.28' filename
予想されるフィルタリング動作を取得します。$val
数字として解釈されないかもしれないという考えに試してみました。
awk -v col="$1" -v val="$2" '$col > ($val + 0)' filename
これにより、ファイルのすべての行が印刷され、TRUEと評価されると考えられます。私はAWKに初めて触れたので、ここからどこから始めるべきかわかりません。