2016-07-27 83 views
0

如果我從wpa_passphrase生成的內容存儲在變量wpa_psk中,我可以使用bash獲得psk的內容,還是需要使用sed或類似的東西?我可以使用bash獲取此參數的內容嗎?

network={ 
    ssid="ssid" 
    psk=13ddde5c993709218f02296c238df70579dc392cc216c02356b483a2c2278187 
} 
+0

嗯...'sed'是bash的? – Andrew

+1

@Andrew'sed'是一個外部命令。 – Kusalananda

+0

@Kusalananda我知道,但我覺得如果它的東西可以在bash腳本和終端中使用,你爲什麼會認爲它不是bash? – Andrew

回答

1

你可以嘗試這樣的:與包括psk=

part=${wpa_passphrase/*psk=/} 
psk=${part/??\}/} 

第一個將刪除一切,第二個將刪除}之前它的空間和換行符。

1

無需外部命令,要求:

IFS=$'\n= ' 
while read -r lhs rhs; do 
    if [[ "$lhs" == "psk" ]]; then 
     printf "%s\n" "$rhs" 
     break 
    fi 
done 

這個循環會從標準輸入讀取行,並將它們拆分上=。變量lhs將得到=的左側,rhs將得到右側。

如果$lhspsk我們打印$rhs到標準輸出並跳出循環。

1

隨着sed

sed -nE 's/^[[:blank:]]+psk=(.*)/\1/p' file.txt 

例子:

$ cat file.txt         
network={ 
    ssid="ssid" 
    psk=13ddde5c993709218f02296c238df70579dc392cc216c02356b483a2c2278187 
} 

$ sed -nE 's/^[[:blank:]]+psk=(.*)/\1/p' file.txt 
13ddde5c993709218f02296c238df70579dc392cc216c02356b483a2c2278187 
相關問題