我想grep/提取一些网站立即在一个特定的字符串



我希望一些特定的网站在字符串之前被提取/grep。

在下面的示例:

让我们假设下面是胡言乱语,我只想提取SOLUTION NEEDED以上的网站!不是其他网站。

我只想提取可以立即在SOLUTION NEEDED上面找到的网站

[36m[•] URL: abvfrt.com|LOAD
EXCEPTION: HTTPSConnectionPool(host='0.0.0.0', port=443): Read timed out. (read timeout=4)
[36m[•] URL: abc dot com |LOAD: xyz=345
EXCEPTION: HTTPSConnectionPool(host='0.0.0.0', port=443): Read timed out. (read timeout=4)
URL: Example dot com |: ABXCDRTTT
33m SOLUTION NEEDED

您可以使用grep -B n和-A n来显示n行BA

在你的例子中,像

grep -B 1 "SOLUTION NEEDED" /path/to/file

建议试试:

grep -B1 "SOLUTION NEEDED" long.log | grep -oP "(?<=^URL: )[^|]*"

解释:

grep -B1 "SOLUTION NEEDED" long.log

在匹配"SOLUTION NEEDED"的行之前抽取1行

grep -oP "(?<=^URL: )[^|]*"

从提取的行。提取URL值

相关内容