linux - 如何对文件进行子集化 - 选择多个行或列

标签 linux unix sed awk cut

我希望得到您关于如何对大文件(数百万行或数百万行)进行子集化的建议/帮助。

例如,

(1) 我有大文件(数百万行,制表符分隔)。我想要此文件的一个子集,其中只有从 10000 到 100000 的行。

(2) 我有大文件(数百万列,制表符分隔)。我想要此文件的一个子集,其中只有从 10000 到 100000 的列。

我知道有 head、tail、cut、split 和 awk 或 sed 等工具。我可以用它们做简单的子集化。但是,我不知道该怎么做。

您能给点建议吗?提前致谢。

最佳答案

过滤行很容易,例如使用 AWK:

cat largefile | awk 'NR >= 10000  && NR <= 100000 { print }'

使用 CUT 可以更轻松地过滤列:

cat largefile | cut -d '\t' -f 10000-100000

正如 Rahul Dravid 所提到的,cat 在这里不是必须的,并且正如 Zsolt Botykai 所补充的那样,您可以使用以下方法提高性能:

awk 'NR > 100000 { exit } NR >= 10000 && NR <= 100000' largefile
cut -d '\t' -f 10000-100000 largefile 

关于linux - 如何对文件进行子集化 - 选择多个行或列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6491532/

相关文章:

linux - bash echo 在 grep 什么都不返回后不起作用

linux - 在第一行之前插入换行符

ubuntu - Sed 无法识别带有双引号的正则表达式

linux - 具有不包含额外行的输出的 diff 2 文件

json - 使用 jq 在 linux 命令行上打印大型 json 文件时出现问题

linux - Tmux: Pane 标题 (#T) 报告为 "fg",而不是提供更多信息的内容

linux - 将第一列内容和前缀附加到行尾

php - Wordpress - 具有相同数据库表的多个博客页面

linux - Unix - 递归计算文件类型的数量

c - 当我尝试从 C 程序调用已编译的 NASM 函数时出现 undefined reference 错误