簡體   English   中英

如何使用grep從文本中提取兩個單詞之間的每個字符串並將其保存到新文件中?

[英]How can I extract every string between two words from text using grep and save it into a new file?

我有一個2.2 GB的.log文件,我想從中提取兩個單詞之間的特定文本行,並使用我的Mac上的正則表達式終端將其保存到另一個文件中。 此行在文件中出現很多次,每個文件都有不同的時間戳。 但我無法弄清楚該命令究竟是做什么的。 我想提取出現在“Timestamp”和“&random”之間的每一個字符串。 字符串的示例如下所示:

TimeStamp:02 / Mar / 2018:11:46:09 +0100 |請求: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

我也嘗試了其他的東西,但沒有一個有效。

你可以使用非貪婪的比賽.*? 匹配直到第一次出現&random 對於TimeStamp, S應該是大寫的,而不是隨機前的空格,你應該使用&符號本身。

我想你不想記錄初始冒號,所以你可以開始與TimeStamp:匹配TimeStamp:

您的命令可能如下所示:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM