我正在編寫一個腳本,它會執行一些自動化的事情,現在需要將它的格式設置爲<tld>_<site>_<sub>
。Bash - 將sub.site.com轉換爲com_site_sub?
我基本上都會招惹它是這樣:./add.sh about.site.com
曾經的名字被提取
我怎麼能寫這樣會添加相應的條目?
我正在編寫一個腳本,它會執行一些自動化的事情,現在需要將它的格式設置爲<tld>_<site>_<sub>
。Bash - 將sub.site.com轉換爲com_site_sub?
我基本上都會招惹它是這樣:./add.sh about.site.com
曾經的名字被提取
我怎麼能寫這樣會添加相應的條目?
你可以亂用$IFS
改變的東西怎麼樣read
解析文本:
hostname="foo.bar.com"
IFS=. read sub site tld <<< "$hostname"
echo ${tld}_${site}_${sub}
您還可以使用sed
:
echo $1 | sed 's/\([^.]*\)\.\([^.]*\)\.\([^.]*\)/\3.\2.\1/'
很多個反斜槓,它涉及兩個過程,但它如果您需要在腳本的單個調用中處理多個此類替換,則可能會有優勢。
或者AWK(乾淨了一點比SED):
echo $1 | awk -F"." '{print $3 "_" $2 "_" $1}'
我喜歡它!並會在這種情況下使用它。下次我實際上只使用PHP(非常舒服),我每年只運行10-20次這樣的腳本,不需要速度戰。 〜約翰。 –