如何打印直到模式匹配包括模式字符串
How to print till the pattern match including pattern string
我想打印行直到模式匹配但包括模式
例如:
我想使用“.com”作为匹配字符串并只打印 http://google.com ,忽略该行的其余部分。
awk 或 grep 会有所帮助。
我尝试了帖子中的代码,但没有得到我想要的代码。
请求你的帮助
使用以下正则表达式:/(.*.com)/
使用grep -o
只输出匹配的字符串:
s='http://google.com/search'
grep -o '.*\.com' <<< "$s"
http://google.com
这是一个awk
echo "http://google.com/search" | awk -F/ -vOFS=/ '/\.com/ {$NF="";sub(/\/$/,"");print}'
http://google.com
另一种方法。假设您的目标是获取所有以 .com
结尾的顶级域,那么您可以删除最后的所有内容,包括 .com
并仅将其替换为 .com
,即
echo "http://google.com/search
1
2" | awk '/\.com/{sub(/\.com.*/, ".com", [=10=]) ;print [=10=]}'
输出
http://google.com
我添加了额外的输入行以表明仅处理包含 .com
的行。
如果要打印出所有输入行,请删除与 reg-ex 的初始匹配项,即
echo "http://google.com/search
1
2" | awk '{sub(/\.com.*/, ".com", [=12=]) ;print [=12=]}'
输出2
http://google.com
1
2
IHTH
我想打印行直到模式匹配但包括模式
例如:
我想使用“.com”作为匹配字符串并只打印 http://google.com ,忽略该行的其余部分。
awk 或 grep 会有所帮助。
我尝试了帖子中的代码,但没有得到我想要的代码。
请求你的帮助
使用以下正则表达式:/(.*.com)/
使用grep -o
只输出匹配的字符串:
s='http://google.com/search'
grep -o '.*\.com' <<< "$s"
http://google.com
这是一个awk
echo "http://google.com/search" | awk -F/ -vOFS=/ '/\.com/ {$NF="";sub(/\/$/,"");print}'
http://google.com
另一种方法。假设您的目标是获取所有以 .com
结尾的顶级域,那么您可以删除最后的所有内容,包括 .com
并仅将其替换为 .com
,即
echo "http://google.com/search
1
2" | awk '/\.com/{sub(/\.com.*/, ".com", [=10=]) ;print [=10=]}'
输出
http://google.com
我添加了额外的输入行以表明仅处理包含 .com
的行。
如果要打印出所有输入行,请删除与 reg-ex 的初始匹配项,即
echo "http://google.com/search
1
2" | awk '{sub(/\.com.*/, ".com", [=12=]) ;print [=12=]}'
输出2
http://google.com
1
2
IHTH