Pergunta

Aqui está um script de linha de comando para uma pesquisa de dicionário usando o 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 "*"

Eu digito "Hello" aqui está a saída:

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"

Eu só quero a string que é depois do s:, nada antes dela. Eu quero remover o seguinte:

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

Deixando isso para tubulação por si só ->

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

Solução 3

Eu tenho um pedaço de código funcionando que aumenta a resposta do 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 "\*\*\*\* "

Ele remove toda a formatação, acredito. Ele remove o **** Noun **** linhas também.

Outras dicas

Eu acredito que se você alterar isso sed -e façam s/^.*S:/ / ou talvez, para ter cuidado extra, s/^[^S]*S:// Você vai conseguir o que deseja. Se o comando sed estiver substituindo uma guia (não posso dizer), então você pode preservar isso ...

Eu não sei o que o grep "*" pretende fazer, mas você pode mudar para:

grep -Eo '\(.*'
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top