Регулярное выражение, которое соответствует всем нескольким отдельным выражениям
Сейчас время поступления в Индию, и я стараюсь изо всех сил, чтобы получить лучший колледж, который я могу найти.
У меня есть PDF-файл, который содержит таблицу, которая выглядит как
Он содержит около 2500+ записей, и у меня есть 3 дня.
Поэтому, чтобы сделать умную работу, выбирая нужные мне колледжи, мне нужно сопоставить содержимое с несколькими регулярными выражениями, например,
- Должен содержать одно из слов "компьютер" или "информация"
- должен содержать как GE, так и FALSE
- Должен соответствовать регулярному выражению
[0-9]{5,}
Я сначала попытался открыть его в libreoffice calc
но он открывается в libreoffice Draw
, Я старался pdftohtml
а также pdftotext
но оба плохо это испортили.
Наконец я пришел в pdfgrep
, но это не работает в сочетании с grep как,
pdfgrep regexp1 ./locn to file|grep regexp2|grep regexp3
дает ошибку
Binary file (standard input) matches
Поэтому все, что мне нужно сделать, - это вставить в pdfgrep одно регулярное выражение, которое будет соответствовать всем необходимым регулярным выражениям.
РЕДАКТИРОВАТЬ: Вы можете скачать PDF здесь.
2 ответа
pdfgrep
работает на страницах, а не строк, так вместо .*
чтобы соответствовать чему-либо, вам нужно [^\n]*
чтобы соответствовать чему-либо, кроме новой строки, и убедитесь, что вы соответствуете той же строке. По какой-то причине [\n]
рассматривается как n
(\
игнорируется) pdfgrep
так что нужна хитрость Попробуй это:
pdfgrep '(Computer|Information)'[^$'\n']'*GE'[^$'\n']*'FALSE'[^$'\n']*'[0-9]{5,}' Closing_Rank_After_Round_III.pdf
В моей системе это возвращает 82 строки:
17 DBLCSE4B Computer Science & Engineering GE FALSE OTHERSTATE 33161
33 DBLITY4B Information Technology GE FALSE OTHERSTATE 38913
74 DHACSE4B Computer Science & Engineering GE FALSE OTHERSTATE 36528
97 DJKCSE4B Computer Science & Engineering GE FALSE OTHERSTATE 22030
108 DJTCSE4B Shri Mata Vaishno Devi University, J&K Computer Science & Engineering GE FALSE OTHERSTATE 41598
112 DMUCOE4B Mizoram University, Aizawl Computer Engineering GE FALSE OTHERSTATE 39759
124 DMUITY4B Mizoram University, Aizawl Information Technology GE FALSE OTHERSTATE 41723
132 DTUCSE4B Tezpur University, Tezpur Computer Science & Engineering GE FALSE OTHERSTATE 36567
161 IAAITY4B Information Technology GE FALSE OTHERSTATE 19303
173 IALITR5M M.Tech Information Technology GE FALSE OTHERSTATE 12723
181 IALITY4B Information Technology GE FALSE OTHERSTATE 10649
187 IGHCSE4B Computer Science & Engineering GE FALSE OTHERSTATE 20054
195 IGWITY4B Information Technology & Management, Information Technology GE FALSE OTHERSTATE 18357
195 IGWITY4B Information Technology & Management, Information Technology GE FALSE OTHERSTATE 18357
200 IJLCSE4B of Information Technology Design & Computer Science & Engineering GE FALSE OTHERSTATE 19427
200 IJLCSE4B of Information Technology Design & Computer Science & Engineering GE FALSE OTHERSTATE 19427
206 IJLECE4B of Information Technology Design & GE FALSE OTHERSTATE 21863
211 IJLMEC4B of Information Technology Design & Mechanical Engineering GE FALSE OTHERSTATE 22433
217 IKOCOE4B Computer Engineering GE FALSE OTHERSTATE 16837
223 IKPCOE4B Design & Manufacturing, Kancheepuram, Computer Engineering GE FALSE OTHERSTATE 14202
247 IVDCOS4B Computer Science GE FALSE OTHERSTATE 18374
252 IVDITY4B Information Technology GE FALSE OTHERSTATE 19973
284 NAGCSE4B National Institute of Technology, Agartala Computer Science & Engineering GE FALSE HOMESTATE 252288
285 NAGCSE4B National Institute of Technology, Agartala Computer Science & Engineering GE FALSE OTHERSTATE 27007
443 NAPCSE4B Computer Science & Engineering GE FALSE HOMESTATE 338141
444 NAPCSE4B Computer Science & Engineering GE FALSE OTHERSTATE 26762
505 NBHCSE4B Computer Science & Engineering GE FALSE HOMESTATE 11495
608 NCACSE4B National Institute of Technology, Calicut Computer Science & Engineering GE FALSE HOMESTATE LD 657523
735 NDUCSE4B National Institute of Technology, Durgapur Computer Science & Engineering GE FALSE HOMESTATE AN 80861
736 NDUCSE4B National Institute of Technology, Durgapur Computer Science & Engineering GE FALSE HOMESTATE WB 19088
737 NDUCSE4B National Institute of Technology, Durgapur Computer Science & Engineering GE FALSE OTHERSTATE 11900
772 NDUITY4B National Institute of Technology, Durgapur Information Technology GE FALSE HOMESTATE AN 95756
773 NDUITY4B National Institute of Technology, Durgapur Information Technology GE FALSE HOMESTATE WB 26872
774 NDUITY4B National Institute of Technology, Durgapur Information Technology GE FALSE OTHERSTATE 16715
811 NGOCSE4B National Institute of Technology, Goa Computer Science & Engineering GE FALSE HOMESTATE 102938
812 NGOCSE4B National Institute of Technology, Goa Computer Science & Engineering GE FALSE OTHERSTATE 13100
862 NHACSE4B National Institute of Technology, Hamirpur Computer Science & Engineering GE FALSE HOMESTATE 34510
863 NHACSE4B National Institute of Technology, Hamirpur Computer Science & Engineering GE FALSE OTHERSTATE 13867
933 NITCSE4B Birla Institute of Technology, Mesra Ranchi Computer Science & Engineering GE FALSE HOMESTATE 10898
955 NITITY4B Birla Institute of Technology, Mesra Ranchi Information Technology GE FALSE HOMESTATE 23647
956 NITITY4B Birla Institute of Technology, Mesra Ranchi Information Technology GE FALSE OTHERSTATE 14055
1080 NJLCSE4B Computer Science & Engineering GE FALSE HOMESTATE 13424
1081 NJLCSE4B Computer Science & Engineering GE FALSE OTHERSTATE 12160
1129 NJLITY4B Information Technology GE FALSE HOMESTATE 20270
1130 NJLITY4B Information Technology GE FALSE OTHERSTATE 14973
1172 NJMCSE4B Computer Science & Engineering GE FALSE HOMESTATE 22151
1173 NJMCSE4B Computer Science & Engineering GE FALSE OTHERSTATE 13379
1280 NKUITY4B Information Technology GE FALSE HOMESTATE 14993
1281 NKUITY4B Information Technology GE FALSE OTHERSTATE 12373
1317 NMGCSE4B National Institute of Technology, Meghalaya Computer Science & Engineering GE FALSE HOMESTATE 66882
1318 NMGCSE4B National Institute of Technology, Meghalaya Computer Science & Engineering GE FALSE OTHERSTATE 30457
1354 NMRCSE4B National Institute of Technology, Manipur Computer Science & Engineering GE FALSE HOMESTATE 335104
1355 NMRCSE4B National Institute of Technology, Manipur Computer Science & Engineering GE FALSE OTHERSTATE 29987
1386 NMZCSE4B National Institute of Technology, Mizoram Computer Science & Engineering GE FALSE HOMESTATE 780732
1387 NMZCSE4B National Institute of Technology, Mizoram Computer Science & Engineering GE FALSE OTHERSTATE 33351
1500 NNGCSE4B National Institute of Technology, Nagaland Computer Science & Engineering GE FALSE OTHERSTATE 32788
1538 NPACSE4B National Institute of Technology, Patna Computer Science & Engineering GE FALSE HOMESTATE 26912
1539 NPACSE4B National Institute of Technology, Patna Computer Science & Engineering GE FALSE OTHERSTATE 17852
1569 NPAITY4B National Institute of Technology, Patna Information Technology GE FALSE HOMESTATE 31050
1570 NPAITY4B National Institute of Technology, Patna Information Technology GE FALSE OTHERSTATE 21633
1588 NPYCSE4B National Institute of Technology, Puducherry Computer Science & Engineering GE FALSE HOMESTATE 212537
1589 NPYCSE4B National Institute of Technology, Puducherry Computer Science & Engineering GE FALSE OTHERSTATE 13738
1655 NRACSE4B National Institute of Technology, Raipur Computer Science & Engineering GE FALSE HOMESTATE 30599
1656 NRACSE4B National Institute of Technology, Raipur Computer Science & Engineering GE FALSE OTHERSTATE 16002
1686 NRAITY4B National Institute of Technology, Raipur Information Technology GE FALSE HOMESTATE 54124
1687 NRAITY4B National Institute of Technology, Raipur Information Technology GE FALSE OTHERSTATE 20012
1746 NROCEC5M National Institute of Technology, Rourkela and M.Tech. Computer Science 5- GE FALSE HOMESTATE 16014
1812 NROCSE4B National Institute of Technology, Rourkela Computer Science & Engineering GE FALSE HOMESTATE 12845
1821 NROCSS5M National Institute of Technology, Rourkela M.Tech. Information Security 5- GE FALSE HOMESTATE 16350
1822 NROCSS5M National Institute of Technology, Rourkela M.Tech. Information Security 5- GE FALSE OTHERSTATE 10803
1986 NSICSE4B National Institute of Technology, Silchar Computer Science & Engineering GE FALSE HOMESTATE 50138
1987 NSICSE4B National Institute of Technology, Silchar Computer Science & Engineering GE FALSE OTHERSTATE 22448
2044 NSKCSE4B National Institute of Technology, Sikkim Computer Science & Engineering GE FALSE HOMESTATE 353234
2045 NSKCSE4B National Institute of Technology, Sikkim Computer Science & Engineering GE FALSE OTHERSTATE 24788
2173 NSRCSE4B National Institution of Technology, Srinagar Computer Science & Engineering GE FALSE HOMESTATE 39818
2174 NSRCSE4B National Institution of Technology, Srinagar Computer Science & Engineering GE FALSE OTHERSTATE 22786
2259 NSTCOE4B Computer Engineering GE FALSE HOMESTATE DD 173213
2260 NSTCOE4B Computer Engineering GE FALSE HOMESTATE GJ 10724
2427 NUDCSE4B Computer Science & Engineering GE FALSE HOMESTATE 46818
2428 NUDCSE4B Computer Science & Engineering GE FALSE OTHERSTATE 18978
2478 NUSITY4B Assam University, Silchar Information Technology GE FALSE HOMESTATE 107749
2479 NUSITY4B Assam University, Silchar Information Technology GE FALSE OTHERSTATE 38122
$'\n'
называется escape-последовательностью ANSI C. Это переносимый и надежный метод указания определенных проблемных символов (например, непечатаемых символов и кавычек) для программ, которые не могут их распознать другими способами. В этом случае я использую их в классе персонажей. Когда класс персонажа начинается с ^
, это означает "сопоставить все, кроме символов в этом классе. Итак, [^$'\n']
означает "соответствовать чему-либо, кроме символа новой строки". Это гарантирует, что все найденные совпадения находятся на одной линии.
Это говорит о том, что где-то в потоке есть двоичный файл:
Может быть, попробуйте:
pdfgrep regexp1 ./locn to file|grep --text regexp2|grep --text regexp3
Или попробуйте использовать strings
:
Согласно руководству по строкам,
For each file given, GNU strings prints the printable character sequences that are at least 4 characters long (or the number given with the options below) and are followed by an unprintable character. By default, it only prints the strings from the initialized and loaded sections of object files; for other types of files, it prints the strings from the whole file. strings is mainly useful for determining the contents of non-text files.
Также представляет интерес: