전체 무작위 라인의 특정 값이 변수와 같은 경우에만 특정 필드 값을 출력합니다.

전체 무작위 라인의 특정 값이 변수와 같은 경우에만 특정 필드 값을 출력합니다.

그래서 약 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

무작위로 일치하는 줄이 아닌 첫 번째로 일치하는 줄을 인쇄합니다.

관련 정보