You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何用awk提取2022世界幸福报告国家名单失败?求解决方案

修复方案与可行命令

原命令的问题

你的awk命令无法运行的核心原因有两个:

  1. 正则表达式中的[是特殊字符,需要用反斜杠转义,原命令里的[[ *]]会被awk解析为无效的正则字符组;
  2. 直接把[[...]]设为记录分隔符(RS)会提取到页面中所有[[包裹的内容,而不仅仅是2022年排名表格里的国家名,结果会包含大量无关链接。

精准提取的awk命令

先通过curl获取维基百科的原始文本,再用awk定位2022年排名表格的行,提取其中的国家名:

curl -s "https://en.wikipedia.org/wiki/World_Happiness_Report?action=raw" | awk '/^\|\s*[0-9]+\s*\|\s*\[\[/ {match($0, /\[\[([^\]|]+)/, arr); print arr[1]}' | head -6

这个命令的逻辑:

  • 匹配以|开头、包含数字排名和[[的表格行(对应2022年排名的行);
  • 用match函数提取[[之后、]或|之前的内容(处理类似[[Finland|Finland]]的格式);
  • 用head -6取前6个国家,正好是你需要的结果。

替代方案:grep + sed组合

如果更习惯用grep和sed,也可以用以下命令:

curl -s "https://en.wikipedia.org/wiki/World_Happiness_Report?action=raw" | grep -E '^\|\s*[0-9]+\s*\|\s*\[\[' | sed -E 's/.*\[\[([^\]|]+).*/\1/' | head -6

逻辑和awk版本一致,先筛选目标行,再用sed替换提取国家名。

内容的提问来源于stack exchange,提问作者Dave Shah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 15:55:04