2014-09-03 51 views
0

shell命令sed編輯如何用awk編輯器替換正則表達式的字符串?使用

echo http://www.domain.com/?params | sed -e 's;https\?://;;' | sed -e 's;/.*$;;' 

輸出 www.domain.com

我如何使用UNIX AWK編輯器輸出這個字符串?

awk {print}?

+0

你真的需要awk,反對編輯切割或其他工具?如果您發佈了幾條有代表性的輸入內容,包括任何您認爲難以解析的內容以及期望的輸出結果,那麼您可能會得到比如果沒有更好的答案。 – 2014-09-03 15:58:56

回答

5

你可以試試這個,

$ echo http://www.domain.com/?params | awk -F/ '{print $3}' 
www.domain.com 

通過grep的,

$ echo http://www.domain.com/?params | grep -oP '(?<=/)[^/]+(?=/)' 
www.domain.com 

通過戰略經濟對話

$ echo http://www.domain.com/?params | sed 's/.*\/\([^\/]\+\)\/.*/\1/' 
www.domain.com 
0

使用awk和GSUB:

$ echo http://www.domain.com/?params | awk '{gsub("\\/\\?params$", ""); print}' 
http://www.domain.com 
$ echo http://www.domain.com/?params | awk '{gsub("\\/\\?params$",""); gsub("^http://",""); print}' 
www.domain.com 

或者,(感謝阿維納什拉吉):

$ echo http://www.domain.com/?params | awk '{gsub(/\/\?params$|^http:\/\//,""); print }' 
www.domain.com 

的Perl:

$ echo http://www.domain.com/?params | perl -pe 's/^http:\/\/([^\/]+).*/\1/' 
www.domain.com 

或者:

$ echo http://www.domain.com/?params | perl -ne 'print "$1\n" if /^http:\/\/([^\/]+)/; ' 
www.domain.com 
+1

單個gsub會做這個工作'$ echo http://www.domain.com/?params | awk'{gsub(/ \/\?params | http:\/\ //,「」)} 1'' – 2014-09-03 02:00:43

2

除了所有的Perl/SED/AWK/grep的,這是其實非常適合剪裁:

$ echo http://www.domain.com/?params | cut -d/ -f3 
www.domain.com 
0

混合起來有點

expr match http://www.domain.com/?params '.*/\(.*\)/' 

expr http://www.domain.com/?params : '.*/\(.*\)/' 

櫃面有更多的斜槓後面

expr http://www.domain.com/?params/ : '.*//\([^/]*\)/' 

櫃面一些真正奇怪的是怎麼回事斜線

expr http://www.domain.com/?params/ : '[^/]*//\([^/]*\)/'