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

如何修正curl输出格式:去除逗号并解决空行与对齐问题

解决ipinfo.io输出格式调整问题

方案一:用jq处理JSON(推荐)

因为ipinfo.io返回的是标准JSON数据,用jq工具直接提取并格式化是最可靠的方式,避免正则处理的各种问题:

# 提取指定字段并按目标格式输出
INFOISP=$(curl --silent ipinfo.io | jq -r '"ip": "\(.ip)"', '"hostname": "\(.hostname)"', '"region": "\(.region)"', '"country": "\(.country)"', '"org": "\(.org)"')
echo "$INFOISP"

输出结果直接符合期望:

"ip": "186.152.174.190" 
"hostname": "host190.186-152-174.telecom.net.ar" 
"region": "Santa Fe" 
"country": "AR" 
"org": "AS7303 Telecom Argentina S.A."

方案二:改进原有sed命令

你之前的问题出在echo ${INFOISP}没有加双引号,导致shell把变量内的换行符替换成空格,进而产生多余空行。修改后可以解决:

INFOISP=$(curl --silent ipinfo.io | grep -E '"ip"|"hostname"|"region"|"country"|"org"')
# 加双引号保留换行,同时去掉逗号和行首空格
echo "$INFOISP" | sed -e 's/,//g' -e 's/^  //'

解释:

  • s/,//g:移除所有行尾的逗号
  • s/^ //:移除行首的两个空格(匹配原输出的缩进)

方案三:用awk一步处理

不需要保存变量,直接通过awk完成过滤、格式调整:

curl --silent ipinfo.io | awk '/"ip"|"hostname"|"region"|"country"|"org"/ {
    gsub(/,/, "");  # 去掉逗号
    sub(/^  /, ""); # 去掉行首缩进
    print           # 输出处理后的行
}'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 18:09:24