2

我正在使用 grep 解析 URL 的日志文件。该文件由竖线字符分隔|

我想使用 grep 来提取与某个字符串匹配的所有 URL。问题是,我想要整个 URL 字段。到目前为止,我有以下正则表达式:

grep -oE 'URL\=.*ZJRWYZFTY.*\|' filename

但是,它会抓取 ZJRWYZFTY 字符串之后的所有内容,包括其他字段。有没有办法捕获 URL 字段中与 ZJRWYZFTY 字符串匹配的所有内容,直到 | ?

提前致谢。

4

1 回答 1

2

grep将对 进行贪婪匹配.*,因此它会捕获所有内容。你可以做[^|]*而不是.*让它表现得像你想要的那样。[^|]将匹配除以下之外的所有字符|

grep -oE 'url\=[^|]*ZJRWYZFTY[^|]*' filename

但它似乎awk是这里更合适的工具。假设 url 字段是第二个字段,您可以执行以下操作:

awk -F'|' '$2 ~ /ZJRWYZFTY/ {print $2}" filename

于 2013-10-14T04:46:52.343 回答