我有一個很大的文本文件(大約10GB),它適合內存沒有任何問題。我的目標是將每一行轉換爲base64字符串。目前我的方法需要永久,因爲它是單線程的,似乎並不完整。Base64編碼逐行更快的方式
while read line; do echo -n -i $line | base64 >> outputfile.txt; done < inputfile.txt
有人能給我一個提示如何更快地做到這一點嗎?此解決方案每小時創建大約100MB(因此修整時間爲100小時),CPU使用率爲5%,磁盤使用率也非常低。
看來我得到了missunderstood有關控制字符... 所以,我包括示例文本文件,輸出應該如何(chepner是與格格正確):
樣品輸入:
Банд`Эрос
testè!?£$
``
▒``▒`
樣本輸出:
[email protected] ~ # head -n 5 bash-script-output.txt
0JHQsNC90LRg0K3RgNC+0YE=
dGVzdMOoIT/CoyQ=
YGA=
4paSYGDilpJg
[email protected] ~ # head -n 5 perl-without-chomp.txt
0JHQsNC90LRg0K3RgNC+0YEK
dGVzdMOoIT/CoyQK
YGAK
4paSYGDilpJgCg==
[email protected] ~ # head -n 5 perl-chomp.txt
0JHQsNC90LRg0K3RgNC+0YE=
dGVzdMOoIT/CoyQ=
YGA=
4paSYGDilpJg
So樣本是每次更好然後人類聲明; =)
echo的哪個版本支持'-i'選項? – chepner
默認情況下,'base64'將換行符插入長編碼行中;你可能想通過使用'-w0'選項來避免這種情況。如果您的輸入文件包含NUL(這意味着它不是一個真正的文本文件),那麼它們將不會通過讀入shell變量來保存。 – rici