2011-07-20 44 views
2

我正在編寫一個腳本,它會執行一些自動化的事情,現在需要將它的格式設置爲<tld>_<site>_<sub>Bash - 將sub.site.com轉換爲com_site_sub?

我基本上都會招惹它是這樣:./add.sh about.site.com

曾經的名字被提取

我怎麼能寫這樣會添加相應的條目?

回答

4

你可以亂用$IFS改變的東西怎麼樣read解析文本:

hostname="foo.bar.com" 
IFS=. read sub site tld <<< "$hostname" 
echo ${tld}_${site}_${sub} 
+0

我喜歡它!並會在這種情況下使用它。下次我實際上只使用PHP(非常舒服),我每年只運行10-20次這樣的腳本,不需要速度戰。 〜約翰。 –

0

您還可以使用sed

echo $1 | sed 's/\([^.]*\)\.\([^.]*\)\.\([^.]*\)/\3.\2.\1/' 

很多個反斜槓,它涉及兩個過程,但它如果您需要在腳本的單個調用中處理多個此類替換,則可能會有優勢。

1

或者AWK(乾淨了一點比SED):

echo $1 | awk -F"." '{print $3 "_" $2 "_" $1}'