相关疑难解决方法(0)

cat line X 到 line Y 在一个大文件上

说我有一个巨大的文本文件(> 2GB),我只是想catXY(如57890000至57890010)。

据我所知,我可以通过管道head输入tail或反之亦然来做到这一点,即

head -A /path/to/file | tail -B
Run Code Online (Sandbox Code Playgroud)

或者

tail -C /path/to/file | head -D
Run Code Online (Sandbox Code Playgroud)

其中ABCD可以根据文件中的行数计算得出,XY

但是这种方法有两个问题:

  1. 你必须计算ABCD
  2. 这些命令可以pipe相互发送比我感兴趣的多得多的行(例如,如果我只读取大文件中间的几行)

有没有办法让 shell 只使用并输出我想要的行?(同时仅提供XY)?

large-files tail cat head

171
推荐指数
5
解决办法
32万
查看次数

有没有办法就地修改文件?

我有一个相当大的文件(35Gb),我想就地过滤这个文件(即我没有足够的磁盘空间来存放另一个文件),特别是我想 grep 并忽略一些模式 - 有没有办法在不使用其他文件的情况下执行此操作?

假设我想过滤掉所有包含foo:例如...

grep large-files text-processing

62
推荐指数
8
解决办法
2万
查看次数

使用sed对大文件进行有效的就地头文件删除?

以下命令可能需要几分钟,具体取决于文件大小。有没有更有效的方法?

sed -i 1d large_file 
Run Code Online (Sandbox Code Playgroud)

sed text-processing

25
推荐指数
2
解决办法
2万
查看次数

从超大文件中删除一行的快速方法

我有一个 67GB 的 .csv 文件(我知道...我知道...)

我需要从文件中删除第 4,125,878 行,因为它已损坏。我的 CSV 解析工具不会忽略或跳过它。

可以sed做类似的东西

sed '4125878d' in.csv > out.csv

但就时间和磁盘空间而言,这将是一项非常昂贵的操作。

如果我使用sed -i '4125878d' in.csv,则操作需要很长时间。

有没有办法可以快速从一个大文件的中间删除一行?

command-line sed csv files

5
推荐指数
1
解决办法
6260
查看次数

标签 统计

large-files ×2

sed ×2

text-processing ×2

cat ×1

command-line ×1

csv ×1

files ×1

grep ×1

head ×1

tail ×1