Pregunta

Aquí hay un script de línea de comandos para una búsqueda de diccionario usando 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 "*"

Escribo en " hola " Aquí está la salida:

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"

Solo quiero la cadena que está después de la S :, nada antes de ella. Quiero eliminar lo siguiente:

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

Dejando esto solo para la canalización - >

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

Solución 3

Tengo un código que funciona, lo que se suma a la respuesta de 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 "\*\*\*\* "

Se elimina todo el formato que creo. También elimina las líneas **** Noun **** .

Otros consejos

Creo que si modifica ese sed -e para hacer s /^.* S: / / o quizás, para tener más cuidado, s / ^ [^ S] * S: // obtendrá lo que desea. Si el comando sed está sustituyendo una pestaña (no puedo decirlo), es posible que desee preservar eso ...

No sé qué pretende hacer grep " * " , pero puedes cambiarlo a:

grep -Eo '\(.*'
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top