Linux 替换大文件中的最后一个字符(整个文件是一行)

Linux 替换大文件中的最后一个字符(整个文件是一行),linux,text,sed,character,Linux,Text,Sed,Character,我有一个60GB的文件,只有一行 我需要做的就是更改最后一个“,”(文件中的最后一个字符) 问题是sed无法处理它,因为它都在一行中,并且无法分配内存 // file.txt [0] ...mple12,sample13),(sample21,sample22,sample23), // desired file.txt [0] ...mple12,sample13),(sample21,sample22,sample23); 我遇到一个错误,无法重新分配内存。在这种情况下,面向流的方法可能

我有一个60GB的文件,只有一行

我需要做的就是更改最后一个“,”(文件中的最后一个字符)

问题是
sed
无法处理它,因为它都在一行中,并且无法分配内存

// file.txt
[0] ...mple12,sample13),(sample21,sample22,sample23),

// desired file.txt
[0] ...mple12,sample13),(sample21,sample22,sample23);

我遇到一个错误,无法重新分配内存。在这种情况下,面向流的方法可能会有所帮助。 可通过shell轻松实现:

# First remove last character
head -c -1 < file.txt > file2.txt
# then add new last character ';' to the end
echo -n ";" >> file2.txt
#首先删除最后一个字符
head-c-1file2.txt
#然后添加新的最后一个字符“;”到底
echo-n“;”>>file2.txt
请注意:如果文件末尾有CR,则需要使用“head-c-2”

一艘班轮将是:

head -c -1 <file.txt | (cat - ; echo ';') > file2.txt
head-c-1 file2.txt

您可以在一个编辑器中打开它并进行修改。如果这只是一个一次性的工作,它实际上是管道中经常重复的一部分,这是一个很好的答案!只需提醒O.P.您需要有2个60GB文件的空间,不能重定向回原始文件名,因为这样会删除文件。i、 e.不要
..)>file1.txt
。祝大家好运。