如何使用grep从文本中提取两个单词之间的每个字符串并将其保存到新文件中?

时间:2019-03-29 14:28:26

标签: regex sed grep

我有一个2.2 GB的.log文件,我想从中提取两个单词之间的特定文本行,然后在Mac上使用带正则表达式的Terminal将其保存到另一个文件中。该行在文件中出现很多次,每次都有不同的时间戳。但是我无法弄清楚到底要执行什么命令。我想提取出现在“时间戳”和“&随机”之间的每个字符串。下面是一个字符串示例:

时间戳记:02 / Mar / 2018:11:46:09 +0100 | Request:GET /track/video.mp4%20play/?id=10988&random

我尝试了以下方法:

grep -Po 'Timestamp \K.*(?= random)' video.log > outfile.txt

和:

sed -n '/Timestamp/,/random/p' video.log > outfile.txt

我也尝试了其他方法,但均无效果。

1 个答案:

答案 0 :(得分:0)

您可以使用非贪婪匹配override.aes进行匹配,直到this.props.onSuccess(data) && this.setState({ loading: false }); 首次出现。对于时间戳记,.*?应该是大写字母,而不是随机的空格,您应该使用与号本身。

我想您不想记录初始冒号,因此可以使用&random

开始比赛

您的命令可能类似于:

S