我的日志文件包含以“skylabs / plat-”开头的文本。我想在文本上面提取整个单词匹配
示例文字
This is a log line 1 skylabs/plat-abcd_1234 end of line
Some other text skylabs/plat-efgj_1234 this is okay
Firth phase of skylabs/plat-lmno-1234-sst all set
Nothing special skylabs/plat-usiu-sku-1234 , good to go
我试过
egrep -Eo "^(skylabs/plat-)" Text.log
但我没有得到任何东西。我想获得类似于下面的输出
skylabs/plat-abcd_1234
skylabs/plat-lmno-1234-sst
答案 0 :(得分:0)
尝试
$ grep -io 'skylabs/plat[a-z0-9_-]*' Text.log
skylabs/plat-abcd_1234
skylabs/plat-efgj_1234
skylabs/plat-lmno-1234-sst
skylabs/plat-usiu-sku-1234
[a-z0-9_-]*
表示零或多个字母,数字,下划线和连字符(i
选项用于忽略大小写,即匹配大写/小写字母)对于给定的输入,您还可以使用grep -o 'skylabs/plat[^ ]*'
,其中[^ ]*
将匹配零个或多个非空格字符。这一切都取决于你需要匹配的字符种类
关于egrep -Eo "^(skylabs/plat-)"
egrep
与grep -E
完全相同
^
是一个元字符,会强制匹配发生在行首。不应该在这里使用()
此处不需要分组-