ランダムライン全体の特定の値が変数と等しい場合にのみ、特定のフィールド値を出力します。

ランダムライン全体の特定の値が変数と等しい場合にのみ、特定のフィールド値を出力します。

だから、約1000行以上の.csvファイルがあります。ファイルはさまざまな映画で構成されています。最初の列は名前、2番目の列は評価(PG-13、Rなど)、5番目の列はリリース年です。ユーザーが好きな年、スコア、評価など、ユーザーの検索基準として定義された私のスクリプト。これで、その行のフィールドにユーザー設定と同じ値がある場合にのみ、ファイルから任意の行を印刷したいと思います。 2001年に評価Rとスコア84を入力した場合は、その行の対応する列が以前に入力した入力と同じ場合にのみ行を印刷します。私はこれをどうすべきか全く知らない。私はそれについて考えました:

awk -F "," 'NR == '$rline' {if ($5 -eq "$yearpref1") {print $1 ", " $5} else {print "Sorry"}}' netflixNoDup.csv

任意の行を印刷しますが、年は(csvファイルの$ 5)$ yearpref1(ユーザーの年の設定を含む変数)と同じではありません...このawkコマンドは、常に任意の行のみを印刷します。

そのフィールドがユーザーのデフォルト設定と同じ場合にのみ印刷し、デフォルトの年がある行が見つかるまで行を検索し続けるにはどうすればよいですか。

ベストアンサー1

テストされていません。入力/出力の例を提供していないので、フィールド番号を推測するだけですが、次のようなものが必要です。

yearpref1='2001'
rating='R'
score='84'
awk -F ',' -v OFS=', ' -v year="$yearpref1" -v rating="$rating" -v score="$score" '
(year == $5) && (rating == $9) && (score == $23) { print $1, $5; f=1; exit }
END { if (!f) print "Sorry" }
' netflixNoDup.csv

ランダムに一致する行ではなく、最初に一致する行を印刷します。

おすすめ記事