Bash ksh:连接一个很长的字符串安全吗

Bash ksh:连接一个很长的字符串安全吗,bash,ksh,Bash,Ksh,我有一个非常大的数据文件(2GB-3GB)。我需要解析其中的一些数据,并检查是否存在重复。所以我有一个空字符串开始,所以我从输入文件中解析出来的数据将根据这个字符串进行检查。如果还没有,请附加它。此字符串可能非常长。危险吗 这并不危险。您可能没有足够的内存来存储非常长的字符串。因此将遇到内存不足错误。除非您无法控制“超大数据文件”的构造方式,否则尝试在一个长字符串中查找重复数据似乎是个坏主意。尝试在shell中执行这种处理似乎非常糟糕-(…(std Unix工具箱方法是将数据转换成一堆行,并使用

我有一个非常大的数据文件(2GB-3GB)。我需要解析其中的一些数据,并检查是否存在重复。所以我有一个空字符串开始,所以我从输入文件中解析出来的数据将根据这个字符串进行检查。如果还没有,请附加它。此字符串可能非常长。危险吗

这并不危险。您可能没有足够的内存来存储非常长的字符串。因此将遇到内存不足错误。

除非您无法控制“超大数据文件”的构造方式,否则尝试在一个长字符串中查找重复数据似乎是个坏主意。尝试在shell中执行这种处理似乎非常糟糕-(…(std Unix工具箱方法是将数据转换成一堆行,并使用
排序| uniq-c
处理来查找重复项)…如果您花时间构造一个非常小的示例案例(并使用格式设置),可能这说明了您试图解决的问题,您将获得一些关于解决问题的其他方法的良好反馈。祝您好运!@Sheller:我想,与其附加到字符串,不如附加到tmp文件。因此,每次我解析数据时,如果grep返回
为空,我会执行
cat$tmp|u file;grep$data
,然后我将
>
附加到文件中。你认为这是一个更好的主意吗?我想,与其附加到字符串,不如附加到tmp文件中。因此,每次我解析数据时,如果grep返回空
,我会执行
cat$tmp_file;grep$data
,然后我将
>
附加到文件中。你认为这是一个更好的主意吗?这可能会起作用,但效率极低,而且我猜速度非常慢。理想情况下,你应该有一个排序的字符串列表,并将每个字符串与以前的字符串进行比较,以检测重复。排序该文件是另一个问题。没有什么是易于实现的我想到了,除了可能使用一些轻量级数据库,比如
sqlite
。但是,shell似乎不是解决这个问题的正确解决方案。我想说,看看Python或Perl,然后看看C/C++/Java/Ruby(不管你知道什么)…是的,作为一种快速尝试,运行解析并将输出传输到“sort-u”,它应该对数据进行排序并过滤掉重复的数据(使用
-u
标志)。这可能会起作用,但我不确定
排序
是否足够智能,可以处理千兆字节的数据。非常感谢您的输入。