Отображение и передача только определенной строки текста из потока - PullRequest
0 голосов
/ 24 октября 2009

Вот скрипт командной строки для поиска в словаре с использованием Wordnet:

#!/bin/bash
# Command line look up using Wordnet - command line dictionary

echo "Type in your word:"
read word

/usr/bin/curl -s -A 'Mozilla/4.0'  'http://wordnetweb.princeton.edu/perl/webwn?s='$word'&sub=Search+WordNet&o2=&o0=1&o7=&o5=&o1=1&o6=&o4=&o3=&h=' \
| html2text -ascii -nobs -style compact -width 500 | grep "*"

Я набираю "привет", вот вывод:

Type in your word:
hello
**** Noun ****
    * S:(n)hello, hullo, hi, howdy, how-do-you-do (an expression of greeting) "every morning they exchanged polite hellos"

Мне нужна только строка после S: ничего перед ней. Я хочу удалить следующее:

**** Noun ****
    * S:

Оставляя это для трубопровода самостоятельно ->

(n)hello, hullo, hi, howdy, how-do-you-do (an expression of greeting) "every morning they exchanged polite hellos"

Ответы [ 3 ]

0 голосов
/ 24 октября 2009

Я не знаю, для чего предназначен grep "*", но вы можете изменить его на:

grep -Eo '\(.*'
0 голосов
/ 24 октября 2009

У меня работает кусок кода, который добавляет ответ DigitalRoss:

#!/bin/bash
# Command line look up using Wordnet - command line dictionary

echo "Type in your word:"
read word

/usr/bin/curl -s -A 'Mozilla/4.0'  'http://wordnetweb.princeton.edu/perl/webwn?s='$word'&sub=Search+WordNet&o2=&o0=1&o7=&o5=&o1=1&o6=&o4=&o3=&h=' \
| html2text -ascii -nobs -style compact -width 500 | grep "*" | sed 's/^[^S]*S://' | grep -v "\*\*\*\* "

Это удаляет все форматирование, которое я считаю. Также удаляются строки **** Noun ****.

0 голосов
/ 24 октября 2009

Я считаю, что если вы измените это sed -e на s/^.*S:/ / или, возможно, будете очень осторожны, s/^[^S]*S:// вы получите то, что вы хотите. Если команда sed заменяет табуляцию (я не могу сказать), вы можете сохранить это ...

...