如何使用 cat 将 bash 中的大文件小写?
How to use cat to lowercase large files in bash?
我正在使用以下命令将文本文件中的所有字符小写。
CORPUSLOWER=$(cat foobar.txt | tr '[:upper:]' '[:lower:]')
echo $CORPUSLOWER > foobar.txt
然而,问题是 foobar.txt
大约有 20gig,它只替换了 foobar.txt
文件的一小部分。
我的问题:如何使用 bash 将大文件转换为小写?
应该可以
tr '[:upper:]' '[:lower:]' < foobar.txt | dd of=foobar.txt conv=notrunc
或者(这可能更干净),使用临时文件
假设您有来自 moreutils 的 sponge
,您可以:
tr '[:upper:]' '[:lower:]' < foobar.txt | sponge foobar.txt
sponge
"soaks up" 所有内容,只有在看到文件末尾时才打开文件。
我正在使用以下命令将文本文件中的所有字符小写。
CORPUSLOWER=$(cat foobar.txt | tr '[:upper:]' '[:lower:]')
echo $CORPUSLOWER > foobar.txt
然而,问题是 foobar.txt
大约有 20gig,它只替换了 foobar.txt
文件的一小部分。
我的问题:如何使用 bash 将大文件转换为小写?
应该可以
tr '[:upper:]' '[:lower:]' < foobar.txt | dd of=foobar.txt conv=notrunc
或者(这可能更干净),使用临时文件
假设您有来自 moreutils 的 sponge
,您可以:
tr '[:upper:]' '[:lower:]' < foobar.txt | sponge foobar.txt
sponge
"soaks up" 所有内容,只有在看到文件末尾时才打开文件。