2014-09-03 3 views
0

командной оболочки с помощью СЭД редакторКак заменить строку регулярным выражением с помощью редактора awk?

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

выход www.domain.com

Как я могу использовать редактор AWK Unix для вывода этой строки?

awk {печатать}?

+0

Вам действительно нужно awk, как противоположность вырезать или какой-нибудь другой инструмент? Если вы публикуете FEW строки репрезентативного ввода, в том числе любой, который, по вашему мнению, будет трудно проанализировать, и ожидаемый результат, вы можете получить лучший ответ, чем если бы вы этого не сделали. –

ответ

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 

Или, (спасибо Авинаш 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 
+1

single gsub сделает это задание '$ echo http://www.domain.com/?params | awk '{gsub (/ \/\? params | http: \/\ //, "")} 1'' –

2

В дополнение ко всем Perl/СЕПГ/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 : '.*/\(.*\)/' 

Incase есть еще косые позже

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

Incase что-то действительно странно происходит с косой черты

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