有人可以解释这段代码在做什么吗? sed做的所有特殊字符是什么?

时间:2014-12-07 04:18:01

标签: linux bash ubuntu awk sed

jsonval () {
temp=`echo $haystack | sed 's/\\\\\//\//g' | sed 's/[{}]//g' | awk -v k="text"    '     {n=split($0,a,","); for (i=1; i<=n; i++) print a[i]}' | sed 's/\"\:\"/\|/g' | sed 's/[\,]/ /g' | sed '  s/\"//g' | grep -w $needle`
    echo ${temp##*|}
}

dev_key='xxxxxxxxxxxx'
zip_code='48446'
city='Lapeer'
state='MI'
red=$(tput setaf 1)
textreset=$(tput sgr0)

haystack=$(curl -Ls -X GET              http://api.wunderground.com/api/$dev_key/conditions/q/$state/$city.json)
needle='temperature_string'

temperature=$(jsonval $needle $haystack)

needle='weather'
current_condition=$(jsonval $needle $haystack)

echo -e '\n' $red $current_condition 'and' $temperature $textreset '\n'

此代码应该使用开发人员密钥将json天气数据解析到终端以调用信息。

这个完整的代码,有人可以解释sed正在做什么,我知道它应该作为替代方法,但为什么有这么多的斜杠和特殊字符使用?

还有什么是echo $ {temp ## * |},所有这些特殊字符让我很难理解这段代码。

1 个答案:

答案 0 :(得分:1)

似乎这个命令试图解析这是一个好主意,因为工具箱中有一些不错的项目。其中一个是。它擅长格式化JSON输出或检索复杂数据源中的项目。示例:

<强> file.json

{
    "items": [
        {
            "tags": [
                "bash",
                "vim",
                "zsh"
            ],
            "owner": {
                "reputation": 178,
                "user_id": 22734,
                "user_type": "registered",
                "profile_image": "https://www.gravatar.com/avatar/25ee9a1b9f5a16feb1432882a9ef2f06?s=128&d=identicon&r=PG",
                "display_name": "Brad Parks",
                "link": "http://unix.stackexchange.com/users/22734/brad-parks"
            },
            "is_answered": false,
            "view_count": 2,
            "answer_count": 0,
            "score": 0,
            "last_activity_date": 1417919326,
            "creation_date": 1417919326,
            "question_id": 171907,
            "link": "http://unix.stackexchange.com/questions/171907/use-netrw-or-nerdtree-in-zsh-bash-to-select-a-file-by-browsing",
            "title": "Use Netrw or Nerdtree in Zsh/Bash to select a file BY BROWSING?"
        }
    ]
}

搜索所有者的子HASH输出output

不要重新发明轮子;)