Мне нужно заново каталогизировать все фильмы со временем выполнения более 5 часов.
Пример данных:
239835<TAB> 92075<TAB>Moonlighting, seasons one and two<TAB>NVIDEO<TAB>DVD<TAB>6 videodiscs (approximately 1200 min.) :
628328 180001 7th heaven. NVIDEO DVD 5 videodiscs (15 hr., 57 min.) :
773429 291072 Veronica Mars. NVIDEO DVD 6 videodiscs (842 min.) :
789908 379843 Castle in the Sky NVIDEO JDVD 2 videodiscs (approximately 125 min.) :
856287 208624 The Munsters. NVIDEO DVD 12 videodiscs (approximately 33 hr.) :
1076125 254085 From up on Poppy Hill (Rated PG) NVIDEO JDVD 2 videodiscs (91 min.) :
1154016 264851 Columbo. NVIDEO DVD 5 videodiscs (725 min.) :
1217001 113980 CSI, crime scene investigation. NVIDEO DVD 5 videodiscs (approximately 732 min.) :
1227803 280535 Seattle Seahawks NVIDEO DVD 3 videodiscs (500 min.) :
1227804 280535 Seattle Seahawks NVIDEO DVD 3 videodiscs (500 min.) :
1287497 293511 Seattle Seahawks : NVIDEO DVD 3 videodiscs (400 min.) :
1287499 293511 Seattle Seahawks : NVIDEO DVD 3 videodiscs (400 min.) :
1367994 228775 Spongebob Squarepants. NVIDEO JDVD 4 videodiscs (469 min.) :
1368002 257248 SpongeBob SquarePants. NVIDEO JDVD 4 videodiscs (589 min.) :
Есть ли быстрый фрагмент perl или awk или однострочный, который бы:
* Вывести всю строку, если
* Количество "мин" больше 300 или
* Количество "часов" больше 5
Что-то вроде:
perl -F\\t -ane 'print if $F[6] <substring or capture group representing minutes> > 300' file.csv
Приближается с awk
:
awk -F'\t' '$6 ~ /^.*\(.*[3-9][[:digit:]]{2}[[:space:]]+min.*\)/ {print}' minutes.csv
Шаблоны REGEX:
Минуты больше 300:
/^.*\(.*[[:space:]][3-9][[:digit:]]{2}[[:space:]]+min.*\)/
минут больше 1000:
/^.*\(.*[[:digit:]]{4,}[[:space:]]+min.*\)/
часов больше 5:
/^.*\(.*[[:space:]][5-9]{1}[[:space:]]+hr.*\)/
Часы больше 10:
/^.*\(.*[[:space:]][[:digit:]]{4}[[:space:]]+hr.*\)/
Есть ли более простой и лаконичный способ?