任意のレコードを印刷したいawkスクリプトがあります。

任意のレコードを印刷したいawkスクリプトがあります。

いくつかのパラメータを受け取り、これらのパラメータに基づいて特定のcsvファイルのデータをフィルタリングするawkスクリプトがあります。

2つの出力があります:

  • まず、パラメータに一致するすべてのレコードを含む.csvファイルを作成します。
  • 次に、レコード名を参照する$ 2フィールドのみを印刷します。ただし、これは20レコードのランダムなサブセットでなければなりません。

これまで私はこれをしました:

私は次のようにスクリプトを呼び出します。./Script.awk ARG1=20 ARG2="AAA" ARG3=1900 data.csv

#! /usr/bin/awk -f

# Define FS
BEGIN {FS=OFS = ","}

$4 > ARG1 && $8 == ARG2 && $20 > ARG3 { print  > "filtered_data.csv" ; print $2 }

だから、フィルタリングされたデータファイルを正しく生成して$2を印刷しますが、レコードが多いので、任意のサブセットのみを印刷したいと思います。。では、どうすればいいのかご存知ですか?

ありがとうございます! !

ベストアンサー1

#!/usr/bin/env bash

out='filtered_data.csv'
awk -F, '$4 > ARG1 && $8 == ARG2 && $20 > ARG3' "$@" > "$out" &&
cut -d, -f2 "$out" | shuf -n20

ただし、ARG1などの代わりに意味のある変数名を選択してください。

おすすめ記事