Как перебрать файл, используя вход из другого файла - PullRequest
0 голосов
/ 12 мая 2019

У меня есть .csv файл символьных строк (около 5400), которые, в дополнение к многим другим строкам, появляются в большом .txt файле огромного корпуса.Мне нужно подсчитать вхождения каждой из 5400 строк в файле .txt corpus.Я использую оболочку (у меня есть Macbook Pro), и я не знаю, как написать цикл for с вводом из одного файла, чтобы затем работать в другом файле.input_file.csv выглядит следующим образом:

A_back
A_bill
A_boy
A_businessman
A_caress
A_chat
A_con
A_concur
A_cool
A_cousin
A_discredit
A_doctor
A_drone_AP_on
A_fellow
A_flatter
A_friend
A_gay
A_giddy
A_guilty
A_harangue
A_ignore
A_indulge
A_interested
A_kind
A_laugh
A_laugh_AP_at
...

corpus_file.txt, который я просматриваю, представляет собой очищенный и лемматизированный корпус с одним предложением в строке;это 4 строки текста:

A_recently N_pennsylvania N_state_N_university V_launch a N_program that V_pay A_black N_student AP_for V_improve their N_grade a N_c AP_to N_c A_average V_bring 550 and N_anything A_high V_bring 1,100
A_here V_be the N_sort AP_of A_guilty N_kindness that V_kill
what N_kind AP_of N_self_N_respect V_be a A_black N_student V_go AP_to V_have AP_as PR_he or PR_she V_reach AP_out AP_to V_take 550 AP_for N_c N_work A_when A_many A_white N_student V_would V_be V_embarrass AP_by A_so A_average a N_performance
A_white N_student V_would V_be V_embarrass AP_by A_so A_average a N_performance

Я хочу точно подсчитать, сколько раз каждая строка в input_file.csv появляется в corpus_file.txt.Я могу сделать по одному с помощью следующего кода:

grep -c A_guilty corpus_file.txt

И через несколько секунд я получаю счетчик того, сколько раз A_guilty появляется в corpus_file.txt (он появляется один раз в битекорпус я положил сюда).Однако я не хочу делать это 5400 раз, поэтому я пытаюсь поместить его в цикл, который будет выводить каждую строку символов и ее количество.

Я попытался запустить приведенный ниже код:

for input_file.csv in directory/path/folder/ do grep -c corpus_file.txt done

Но это не работает.input_file.csv и corpus_file.txt находятся в одной папке, поэтому имеют один и тот же каталог.

Я надеюсь получить список из 5400 строк символов и количество раз, когда каждая строка появляется в большом файле corpus_file.txt.Примерно так:

term - count
A_back - 2093
A_bill - 873
A_boy - 1877
A_businessman - 148
A_caress - 97
A_chat - 208
A_con - 633

1 Ответ

0 голосов
/ 12 мая 2019

Это может быть все, что вам нужно:

$ cat words
sweet_talk
white_man
hispanic_american

$ cat corpus
foo
sweet_talk
bar
hispanic_american
sweet_talk

$ grep -Fowf words corpus | sort | uniq -c
      1 hispanic_american
      2 sweet_talk

Если нет, то отредактируйте свой вопрос, чтобы уточнить ваши требования и предоставить более по-настоящему репрезентативный пример ввода / вывода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...