![](/img/trans.png)
[英]How to use sed/grep to extract text between two words with condition?
[英]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.