我有一個5.1GB
文件,這是一行文本沒有換行符。Sed命令不能完全解析輸入文件
我已經提供了以下命令來添加新的行字符後,每{...}
:
's/{[^}]*}/&\n/g' input > output.txt
這如預期運作,但它並沒有完全完成,但不會引發錯誤消息到控制檯。
它沒有完成的原因是因爲output.txt
總是1.1GB
所以我缺少~3.9GB
的數據。
我也試圖做一個內聯sed -i 's/{[^}]*}/&\n/g' input
,它也產生一個1.1GB
文件。
sed
是否限於特定的輸出尺寸?我找不到類似的用例。
此外,我嘗試使用tr
這確實產生完整的輸出大小,但它似乎不能用tr
命令替換1個字符與多個字符。這不起作用:
tr '}' '}\n' <input> output.txt
有沒有一種方法,使SED全面完成文件?
難道是有一個EOF字符(0×04或Ctrl-d)躲在你的輸入文件選項
-u
?這可能會使sed過早終止。 –大多數'sed'實現沒有行長度限制,但'sed'需要malloc足夠的內存來處理它。您可能會對可用內存造成限制。 'Perl'通常不存在這個問題,如果你不想使用'perl',你可以將輸入分成更小的文件,通過sed處理並在最後結合它們。 –
您不必匹配整個塊,只需要匹配'}':'s /} /} \ n'/ g'。 (將我以前對這個評論的回答降級,因爲它沒有解決實際問題。) – chepner