2014-12-07 52 views
-2
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在做什麼特殊字符?

這是完整的代碼,有人可以解釋sed在做什麼,我知道它應該作爲一種替代方法,但爲什麼會出現如此多的斜槓和特殊字符?

什麼是echo $ {temp ## * |}在做什麼,所有這些特殊字符都讓我很難理解這段代碼。

+1

運行這種CMD的用你自己的輸入並看到...... echo「a \\ b」| sed's/\\\\\ // \ // g' http://www.grymoire.com/Unix/Sed.html#uh-1 – 2014-12-07 04:28:27

+1

其次,它的風格並不好,寫得一團糟,從中學習會引導你錯誤的方式。 – BMW 2014-12-07 04:34:04

+0

「$乾草堆」的價值是什麼?如果沒有這個值,就不可能知道sed對字符串做了什麼,你將不得不將代碼切成片段,嘗試每個片斷查看它們的輸出。 – repzero 2014-12-07 04:53:40

回答

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?" 
     } 
    ] 
} 

輸出搜索所有者的子HASHoutput

不嚴重推倒重來;)

相關問題