我正在我的ubuntu上做下一个声明:
split --number=l/5 /pathToSource.csv /pathToOutputDirectory
如果我做“ls”
myUser@serverNAme:/pathToOutputDirectory> ls -la
total 21467452
drwxr-xr-x 2 myUser group 4096 Jun 23 08:51 .
drwxrwxrwx 4 myUser group 4096 Jun 23 08:44 ..
-rw-r--r-- 1 myUser group 10353843231 Jun 23 08:48 aa
-rw-r--r-- 1 myUser group 0 Jun 23 08:48 ab
-rw-r--r-- 1 myUser group 11376663825 Jun 23 08:51 ac
-rw-r--r-- 1 myUser group 0 Jun 23 08:51 ad
-rw-r--r-- 1 myUser group 252141913 Jun 23 08:51 ae
如果我对ab和广告文件执行“du”。
$du -h ab ad
0 ab
0 ad
如您所见,拆分将文件分成非同类形式。 有谁知道发生了什么? 一些不可打印的角色可以悬挂分裂吗? 谢谢。 最好的祝福! 旧金山。
答案 0 :(得分:1)
虽然这是不寻常的数据,平均线长为114137,但我不确定是否完全描述了这个问题。嗯,你有21982648969的数据=>分裂试图填充的每个桶是4396529793.这大于2 ^ 32。我想知道我们有32位溢出。您是32位还是64位平台?看看代码我不会看到溢出问题TBH。请注意,您可以对数据进行匿名化和压缩,从而提供以下文件供下载:
tr -c '\n' . < /pathToSource.csv | xz > /pathToSource.csv.xz
它也值得指定版本,因为实现在v8.8和v8.13之间略有改变
答案 1 :(得分:0)
groovy的工作:
class Sanitizer {
public static void main(String[] args) {
def textOnly = new File('/path/NoDanger.txt')
def data = new File('/path/danger.txt')
String line = null
data.withReader { reader ->
while ( ( line = reader.readLine() ) != null ){
/*char[] stringToCharArray = line.toCharArray();
for(int i = 0; i < 5; i++ ){
char a = stringToCharArray[i]
int b = Character.getNumericValue(a);
println Integer.toHexString(b)
if (!(b =~ /\w/)) {
println "inside"
} else println "outside"
}*/
String newString = line.replaceAll("[^\\p{Print}]", "");
textOnly << newString+"\n"
}
} //reader
}
}