grep/sed/awk 个字典定义的 lynx 输出中的段落或部分
grep/sed/awk paragraphs or sections from lynx output for a dictionary definition
我有一个 bash 函数,可以让我看到来自 Google:
的单词定义
defword() {
if [ -z ]; then
header=30
else
header=
fi
lynx -dump "http://www.google.com/search?hl=en&q=define%3A+&btnG=Google+Search" | grep -v "\[1\] Google" | grep -v "define: __" | grep -v "\[2\]IMAGES" | head -${header}
}
例如defword dog
会显示 'dog' 的前 30 行输出,defword dog 50
会显示前 50 行。
我突然想到,如果我可以抓住 'noun'、'verb'、'wikipedia' 部分等,这可能是更清晰的输出。
你能建议我可以 运行 说 defword dog noun
显示整个名词部分(来自单词 'noun' 到下一节之前的空白行),defword dog noun 2
仅显示名词部分的定义 2(如果存在这些节,则 'verb' 或 'adjective' 也是如此),以及 defword dog wikipedia
显示出现在名词和动词下方的维基百科定义(可以通过使用上述功能执行 defword dog 100
来查看维基百科部分)?
两行之间的匹配可以用 sed (https://unix.stackexchange.com/a/264977)
要在您的线路之间进行匹配,您可以通过管道传输到
sed -n '/^ noun$/,${p;/^$/q}'
这可以让你的整个脚本被整理成
lynx -dump "http://www.google.com/search?hl=en&q=define%3A+&btnG=Google+Search" | sed -n '/^ '"${2:-noun}"'$/,${p;/^$/q}'
同时使用 bash (https://coderwall.com/p/s8n9qa/default-parameter-value-in-bash)
中的默认参数语法
我有一个 bash 函数,可以让我看到来自 Google:
的单词定义defword() {
if [ -z ]; then
header=30
else
header=
fi
lynx -dump "http://www.google.com/search?hl=en&q=define%3A+&btnG=Google+Search" | grep -v "\[1\] Google" | grep -v "define: __" | grep -v "\[2\]IMAGES" | head -${header}
}
例如defword dog
会显示 'dog' 的前 30 行输出,defword dog 50
会显示前 50 行。
我突然想到,如果我可以抓住 'noun'、'verb'、'wikipedia' 部分等,这可能是更清晰的输出。
你能建议我可以 运行 说 defword dog noun
显示整个名词部分(来自单词 'noun' 到下一节之前的空白行),defword dog noun 2
仅显示名词部分的定义 2(如果存在这些节,则 'verb' 或 'adjective' 也是如此),以及 defword dog wikipedia
显示出现在名词和动词下方的维基百科定义(可以通过使用上述功能执行 defword dog 100
来查看维基百科部分)?
两行之间的匹配可以用 sed (https://unix.stackexchange.com/a/264977)
要在您的线路之间进行匹配,您可以通过管道传输到
sed -n '/^ noun$/,${p;/^$/q}'
这可以让你的整个脚本被整理成
lynx -dump "http://www.google.com/search?hl=en&q=define%3A+&btnG=Google+Search" | sed -n '/^ '"${2:-noun}"'$/,${p;/^$/q}'
同时使用 bash (https://coderwall.com/p/s8n9qa/default-parameter-value-in-bash)
中的默认参数语法