如何打印直到模式匹配包括模式字符串

时间:2015-01-20 16:33:04

标签: regex awk grep

我想打印直到匹配模式的行,但包括模式

例如:

http://google.com/search

我想使用“.com”作为匹配字符串,只需打印http://google.com,忽略其余部分。

awk或grep会有所帮助。

我尝试了帖子中的代码,但并没有得到我想要的代码。

请求您的帮助

4 个答案:

答案 0 :(得分:2)

使用grep -o仅输出匹配的字符串:

s='http://google.com/search'

grep -o '.*\.com' <<< "$s"
http://google.com

答案 1 :(得分:0)

使用以下正则表达式:/(.*。com)/

请参阅this example

答案 2 :(得分:0)

这是awk

echo "http://google.com/search" | awk -F/ -vOFS=/ '/\.com/ {$NF="";sub(/\/$/,"");print}'
http://google.com

答案 3 :(得分:0)

另一种方法。假设您的目标是收集所有以.com结尾的顶级域名,那么您可以删除最后的所有内容,包括.com,并将其替换为.com,即< / p>

echo "http://google.com/search
1
2" | awk '/\.com/{sub(/\.com.*/, ".com", $0) ;print $0}'

<强>输出

http://google.com

我已添加了额外的输入行,以表明只处理包含.com的行。

如果要打印输出的所有行,请删除与reg-ex的初始匹配,即

echo "http://google.com/search
1
2" | awk '{sub(/\.com.*/, ".com", $0) ;print $0}'

输出2

http://google.com
    1
    2

IHTH