Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在使用 grep 解析 URL 的日志文件。该文件由竖线字符分隔|。
|
我想使用 grep 来提取与某个字符串匹配的所有 URL。问题是,我想要整个 URL 字段。到目前为止,我有以下正则表达式:
grep -oE 'URL\=.*ZJRWYZFTY.*\|' filename
但是,它会抓取 ZJRWYZFTY 字符串之后的所有内容,包括其他字段。有没有办法捕获 URL 字段中与 ZJRWYZFTY 字符串匹配的所有内容,直到 | ?
提前致谢。
grep将对 进行贪婪匹配.*,因此它会捕获所有内容。你可以做[^|]*而不是.*让它表现得像你想要的那样。[^|]将匹配除以下之外的所有字符|:
grep
.*
[^|]*
[^|]
grep -oE 'url\=[^|]*ZJRWYZFTY[^|]*' filename
但它似乎awk是这里更合适的工具。假设 url 字段是第二个字段,您可以执行以下操作:
awk
awk -F'|' '$2 ~ /ZJRWYZFTY/ {print $2}" filename