我想打印直到匹配模式的行,但包括模式
例如:
我想使用“.com”作为匹配字符串,只需打印http://google.com,忽略其余部分。
awk或grep会有所帮助。
我尝试了帖子中的代码,但并没有得到我想要的代码。
请求您的帮助
答案 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