Я пытаюсь уменьшить .sm
file1
- около 10 ГБ, отфильтровывая его с использованием длинного набора слов (около 180,108 элементов), перечисленных в текстовом файле file2
.
File1
структурирован следующим образом:
word <http://internet.address.com> 1
т.е. one word
, за которым следуют a blank space
, an internet address
и number
.
File2
- это простое .txt
файл, список слов, по одному в каждой строке.
Моя цель - создать третий файл File3
, содержащий только те строки в file1
, первое слово которых совпадает со списком слов file2
, и не обращайте внимания на все остальное.
Моя попытка заключается в следующем:
grep -w -F -f file2.txt file1.sm > file3.sm
Я также попытался сделать что-то подобное:
gawk 'FNR==NR {a[$1]; next } !($2 in a)' file2.txt file1.sm > file3.sm
, но снет успехаЯ понимаю, что /^
и \b
могут сыграть здесь роль, но я не знаю, как вписать их в синтаксис.Я много смотрел по сторонам, но, похоже, решение не подходит.
Моя проблема в том, что здесь grep читает всю строку файла file1, и может случиться так, что соответствующее слово находится в адресе веб-страницы, а я незаинтересован в выяснении.