我尝试过的是
read -p "Enter City In Australia: " city
function getaa {
curl -s http://localhost:8080/api/examples-services/postcode/$city/ |
json_pp | grep -E '"' | cut -d \ -f7-30 | cut -d: -f1 | tr -d '"' |
sed '1d'
}
getaa
#read -p "Enter City In Zip :" sub
#curl -s http://localhost:8080/api/examples-services/postcode/$city/ | json_pp | grep -E '"' | cut -d \ -f7-30 | cut -d: -f2 | tr -d '",,,' | sed '1d' | sed -n ${sub}p
在我进入一个城市后,我想输出他们的邮政编码
我目前的输出是:
Perth
Perthville
Perth Gpo
North Perth
Perth East
我的预期输出是:
1.Perth
2.Perthville
3.Perth Gpo
4.North Perth
5.Perth East
答案 0 :(得分:0)
如果您只想在每行的开头添加行号,请通过以下方式输出输出:
include_path
如果要格式化行号,sed可以轻松完成此操作
答案 1 :(得分:0)
如果curl -s http://localhost:8080/api/examples-services/postcode/$city/
的输出为:
{
"result": "OK",
"message": {
"East Perth": "WA 6892 (PO Boxes 1-827 & 6002-6892)",
"North Perth": "WA 6906 (PO Boxes)",
"Perth": "WA 6848 (GPO Boxes 9000-10000)",
"Perth Airport": "WA 6105",
"Perth Bc": "WA 6849 (PO Boxes 8001-8506)",
"Perth East St Georges Tce": "WA 6832 (PO Boxes 3001-3540)",
"Perth Gpo": "WA 6000",
"Perth St Georges Tce": "WA 6831 (PO Boxes 5000-5500)",
"Perthville": "NSW 2795",
"South Perth": "WA 6951 (PO Boxes)",
"South Perth Angelo St": "WA 6151 (PO Boxes)"
}
}
你在DavidC.Rankin的评论中发布的那个(并且截断的json被转换为有效的json,并且为了更好的可见性而在这里打印得很漂亮)。
在您的bash功能中,您使用json_pp
只是为了从json
请求中打印出curl
。因此我省略了它。
如果您的json
很简单,那么followign awk one-liner可以解决您的问题:
awk -F":" 'BEGIN { RS = "{|}|}}|," } NR > 3 { gsub(/"/, "", $0); print NR-3"."$1 }' message.json
或
read -p "Enter City In Australia: " city
curl -s http://localhost:8080/api/examples-services/postcode/$city/ | awk -F":" 'BEGIN { RS = "{|}|}}|," } NR > 3 { gsub(/"/, "", $0); print NR-3"."$1 }'
输出:
1.East Perth
2.North Perth
3.Perth
4.Perth Airport
5.Perth Bc
6.Perth East St Georges Tce
7.Perth Gpo
8.Perth St Georges Tce
9.Perthville
10.South Perth
11.South Perth Angelo St
在awk中,您可以将默认(newline character
)记录分隔符(RS
)更改为任何正则表达式。我们在执行开始时,在处理任何输入之前执行此操作。我们还将字段分隔符更改为冒号(:
),请注意-F":"
选项。基于简单的示例输入和提供的正则表达式,我们需要在3rd line
(NR > 3
)之后提取记录。 gsub
函数会从每条记录中删除双引号("
),然后打印出行号,1st field
($1
)以句点({{1}分隔因为它发布在您的预期输出中。行号是内置变量.
的记录数量的变化值,以及我们处理的数量。