我的文件包含~80,000行有问题。它是一个23Gb的大文件。我已经设法使用以下命令来填充该大小的类似文件:
awk '{fn = NR % 24; print > ("file1_" fn)}' file1
但是,此命令会暂停此一个问题文件。问题文件确实有一个非常大的30亿字符行(其他文件中的最长行少于10亿)我猜这是问题所在。
我想摆脱文件中的这一长行并继续进行,但事实证明这很困难。我只是简单地使用以下工作
awk 'length < 1000000000' file1 > file2
然而,这也是在3.5小时后仍在运行。是否存在一种快速浏览文件的方法,以及一行中字符数的计数超过例如10亿,它停止计数并移动到下一行?
答案 0 :(得分:1)
也许您可以尝试将两个awk行合并为一个命令,它可能会更快。因为,它只处理你的怪物文件一次。但你必须测试。
awk '{fn = NR % 24; if(length< 1000000000) print > ("file1_" fn)}' file1
答案 1 :(得分:0)
尝试使用sed删除超过一定数量字符的行
# delete lines longer than 65 characters
sed '/^.\{65\}/d' file
您还可以使用两步法:
# use sed to output the line numbers containing lines
# longer than a certain number of characters
sed -n '/^.\{65\}/=' file
然后使用该列表在awk中构建跳过列表,即如果NR
等于这些数字中的任何一个,则跳过该行。