我希望一些特定的网站在字符串之前被提取/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值