2017-02-07 3 views
1

Я использую TreeTagger (http://www.cis.uni-muenchen.de/~schmid/tools/TreeTagger/) для извлечения существительных из текста. Моя проблема заключается в том, что выход отформатирован как таковой:Bash: Извлечь ячейки из результатов, отформатированных как таблица

word pos  lemma 

The  DT  the 
TreeTagger  NP  TreeTagger 
is  VBZ  be 
easy JJ  easy 
to  TO  to 
use  VB  use 

с по-видимому, не вариант, чтобы получить существительные только («NP» и «НН»). С bash, как я могу получить ячейки в первом столбце с «NP» или «NN» во втором столбце?

ответ

2

Вы можете использовать AWK для этого:

awk '$2 ~ /^N[PN]$/{print $1}' file 

TreeTagger 

Regex /^N[PN]$/ будет соответствовать либо NP или NN

Как @Cyrus справедливо заметил ниже, вы можете использовать чередование в своем регулярном выражении, как:

awk '$2 ~ /^(NP|NN)$/ {print $1}' file 
+1

или 'awk '$ 2 ~/^ (NP | NN) $/{print $ 1}' file' – Cyrus

+0

Это здорово, как перенаправить существительные в массив вместо файл? – Sulli

+0

Для использования массива: 'arr = ($ (awk '$ 2 ~/^ N [PN] $/{print $ 1}' файл))' – anubhava

 Смежные вопросы

  • Нет связанных вопросов^_^