簡體   English   中英

Linux 在正則表達式匹配非常大的文件后添加新行,沒有換行符

[英]Linux add new line after regex match very large file with no line breaks

我有一個~5.1GB的文件,不幸的是它沒有任何換行符。

幸運的是,很容易找到我想要在以下正則表達式之后插入換行符的位置:

\\{(.*?)\\}

它匹配{}中的所有內容。

我嘗試使用 grep 查找與上述匹配的輸出,但出現以下錯誤:

grep: memory exhausted

因為它試圖將完整的 5GB 行加載到內存中。 有沒有辦法在不將其加載到內存中並在每個正則表達式匹配后附加新行的情況下處理它?

我對 Linux 不是很有經驗,作為參考,這將在 Amazon Linux EC2 實例上運行。

使用sed的內聯替換:

sed -i 's/{[^}]*}/&\n/g' file

-i選項指定文件應該就地編輯。

該腳本's/{[^}]*}/&\\n/g'各國s的ubstitute出現{[^}]*}&\\n (其中, &裝置匹配的字符串本身) g lobally在file .

暫無
暫無

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

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