Отображение и передача только определенной строки текста из потока
Вопрос
Вот скрипт командной строки для поиска в словаре с использованием 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
У меня есть фрагмент кода, который добавляет ответ на 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 ****
.
Другие советы
Я полагаю, что если вы измените sed -e
на s /^.* S: / /
или, возможно, будете очень осторожны, s / ^ [^ S] * S: //
вы получите то, что хотите. Если команда sed заменяет вкладку (я не могу сказать), вы можете сохранить это ...
Я не знаю, для чего предназначен grep " * / quot;
, но вы можете изменить его на:
grep -Eo '\(.*'