【发布时间】:2010-11-29 17:29:18
【问题描述】:
在编写 Perl 脚本时,我需要在文件的一行中写入以逗号分隔的用户名。
这就是为什么我想知道.txt文件中行的最大大小是否有任何限制。
【问题讨论】:
-
您希望创建多大的文件?
标签: perl unix file filesystems
在编写 Perl 脚本时,我需要在文件的一行中写入以逗号分隔的用户名。
这就是为什么我想知道.txt文件中行的最大大小是否有任何限制。
【问题讨论】:
标签: perl unix file filesystems
文本文件和其他文件一样,换行符和其他字符一样,所以只有通常的文件大小限制适用(旧文件系统的大小限制为 4Gb,文件必须适合磁盘等)
除非您逐行读取它,否则您不会遇到任何读写问题 - 您可能会耗尽内存或遇到各种缓冲区溢出。这可能发生在任何文本编辑器或文本处理程序(例如 sed 或 awk)中,因为与 OS 内核不同,这些行分隔很重要
我建议每行保留一个用户,因为当您使用外部程序处理文件时,阅读起来更自然且不易出错。
【讨论】:
您唯一需要担心的是您可以创建的文件的大小以及您可以读取的文件的大小。
计算机对行一无所知,行是对文件中字节的解释。我们决定有一些字符序列来划分行的末尾,然后告诉我们的程序从文件中抓取内容,直到它到达那个序列。对我们来说,这是一条线。
例如,您可以在文本文件中定义一行以逗号结尾:
$/ = ',';
while( <DATA> )
{
chomp;
print "Line is: $_\n";
}
__DATA__
a,b,c,d,e,f,g
尽管看起来我在__DATA__ 下只有一行,但这只是因为我们习惯了书籍。电脑不读书。相反,这个程序认为逗号之间的所有内容都是一行:
Line is: a
Line is: b
Line is: c
Line is: d
Line is: e
Line is: f
Line is: g
【讨论】:
没有大小限制,除了你的文件系统很可能是 2TB 或其他东西。
【讨论】:
不,在您达到任何文件大小限制之前没有这样的限制。
【讨论】:
我刚刚在 Kwrite 中遇到了一个大约 100 万个字符的行的问题。
虽然理论上没有限制,但如果要处理文件,则必须将行换行以显示宽度。在每次编辑时,都会执行许多计算,可能涉及交换内存。 Thar 使编辑变得笨拙。排长队可能很不方便。
【讨论】:
在一些旧的 Unix 系统上,一些文本实用程序(例如 join、sort 甚至一些旧的 awk)对最大行大小有限制。我认为这是实用程序的限制,但不是操作系统。据我所知,GNU 实用程序没有这样的限制,因此 Linux 从来没有这个问题。
【讨论】:
文件大小取决于您的操作系统的文件系统。工具对此没有限制(或者至少到目前为止我从未见过..)
【讨论】: