我的一个巨大的(最多 2 GiB)文本文件包含其中每一行的大约 100 个精确副本(在我的情况下没用,因为该文件是一个类似 CSV 的数据表)。
我需要的是在保持原始序列顺序的同时删除所有重复(最好,但可以为了显着的性能提升而牺牲)。结果中的每一行都是唯一的。如果有 100 条相等的行(通常重复项分布在整个文件中并且不会是邻居),则只剩下一种。
我已经用 Scala 编写了一个程序(如果您不了解 Scala,请考虑使用 Java)来实现这一点。但也许有更快的 C 编写的本地工具能够更快地做到这一点?
更新:awk '!seen[$0]++' filename只要文件接近 2 GiB 或更小,该解决方案似乎对我来说很好用,但现在我要清理 8 GiB 文件,它不再起作用。在配备 4 GiB RAM 的 Mac 和配备 4 GiB RAM 和 6 GiB 交换的 64 位 Windows 7 PC 上,似乎无穷无尽,只是内存不足。鉴于这种经验,我并不热衷于在具有 4 GiB RAM 的 Linux 上尝试它。
我既不担心 RAM 使用情况(因为我已经足够了),也不担心在意外关闭的情况下丢失数据(因为我的电源有保障,系统是可靠的,数据并不重要)。但是我做了很多文件处理并且可以使用一些性能提升。
这就是为什么我想将系统设置为使用更多 RAM 进行文件系统读写缓存,积极预取文件(例如,预读应用程序访问的整个文件,以防文件大小合理或至少否则,请提前读取其中的一大块)并减少刷新写入缓冲区的频率。如何实现这一目标(可能)?
我在 XUbuntu 11.10 x86 上使用 ext3 和 ntfs(我经常使用 ntfs!)文件系统。
在Midnight Commander中,如何快速设置右侧面板与左侧面板相同的目录(反之亦然)?
以前觉得SCP是SSH复制文件的工具,SSH复制文件叫做SFTP,本身就是FISH的同义词。
但是现在,当我在 Windows 中寻找 Total Commander 插件来执行此操作时,我注意到它的页面上显示“允许通过安全 FTP 访问远程服务器(通过 SSH 的 FTP)。需要 SSH2。这不一样作为SCP!”。
如果它不一样,那么我误解了什么?
如何在不在编辑器或查看器应用程序中打开文件的情况下找到文本文件包含的行数?是否有方便的 Unix 控制台命令来查看数字?
我注意到一些应用程序将它们的配置文件放在其中,~/.config/appname而其他应用程序为此使用~/.appname(经典方式,AFAIK)。这种区别有什么意义,我的应用程序可以更好地考虑什么?
更新:看起来我的(XUbuntu 11.10 默认)$XDG_CONFIG_HOME 设置为~/并且我系统中的大多数应用程序(如 Mozilla Firefox、Adobe Flash Player、Midnight Commander、Opera、Wine 等)都符合这一点。但仍有许多应用程序(如 Compiz、Deadbeef、VLC、Qt Creator、Google Chrome、XFCE 等)在使用~/.config/。另一个可疑的事情是目录~/.config/本身不是隐藏的(它们的名称中没有点) - 应用程序配置目录是否不希望在不依赖于位置($XDG_CONFIG_HOME 值)的情况下具有恒定的自己的名称?
我希望 xdg-open 命令使用与我在默认文件管理器中双击文件时打开的应用程序相同的应用程序,但这并不总是正确的。
例如,我的 DE 是 XFCE,我的文件管理器是 Thunar,我的默认图片查看器是 Ristretto。但是,xdg-open example.png在 Pinta 中打开示例 PNG 文件。为什么?
我有兴趣将 torrent 文件渲染为可读形式(查看它引用了哪些文件,它包含哪些跟踪器信息等)。我可以使用什么工具来做到这一点?
files ×3
bittorrent ×1
dot-files ×1
filesystems ×1
fonts ×1
freedesktop ×1
fstab ×1
home ×1
large-files ×1
linux ×1
mc ×1
panel ×1
performance ×1
posix ×1
scp ×1
sftp ×1
ssh ×1
sysctl ×1
text ×1
ttf ×1
xdg-open ×1