仅当整个随机线的特定值等于某个变量时才输出特定字段值

仅当整个随机线的特定值等于某个变量时才输出特定字段值

所以我有一个包含大约 1000 多行的 .csv 文件。该文件由各种电影组成;第一列是名称,第二列是评级(PG-13、R 等),第五列是发布年份...我基本上采用一些用户输入(在我的脚本中定义为用户的搜索条件),例如他们喜欢的年份、分数和评级。现在,仅当该行的字段与用户首选项的值相同时,我才想从文件中打印随机行。就像如果我输入 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

请注意,这会打印第一个匹配行,而不是随机匹配行。

相关内容