如何使用awk编辑器用正则表达式替换字符串?

时间:2014-09-03 01:37:05

标签: regex replace awk sed

使用sed编辑器的shell命令

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

输出 的 www.domain.com

如何使用unix awk编辑器输出此字符串?

awk {print}?

4 个答案:

答案 0 :(得分: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

通过sed,

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

答案 1 :(得分:2)

除了所有perl / sed / awk / grep之外,这实际上非常适合剪切:

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

答案 2 :(得分: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

或者,(感谢Avinash Raj):

$ 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

答案 3 :(得分: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/ : '[^/]*//\([^/]*\)/'