相关疑难解决方法(0)

如何将 200 行文件中的第 10 行到 100 行放入新文件中

我有 200 行的文件。

我需要从 10 到 100 中提取行并将它们放入一个新文件中。

你如何在 unix/Linux 中做到这一点?

您可以使用哪些可能的命令?

sed tail text-processing head

29
推荐指数
3
解决办法
21万
查看次数

从文本文件中取出一段的最佳方法是什么?

从巨大的文本文件中提取第 20 -45 行的好方法是什么。当然是非交互的!

command-line text-processing

14
推荐指数
3
解决办法
5122
查看次数

使用 head 和 tail 抓取不同的行集并保存到同一个文件中

所以这是家庭作业,但我不会问具体的家庭作业问题。

我需要使用 head 和 tail 从一个文件中获取不同的行集。所以像第 6-11 行和第 19-24 行一样,将它们都保存到另一个文件中。我知道我可以使用 append 来做到这一点,例如

head -11 file|tail -6 > file1; head -24 file| tail -6 >> file1. 
Run Code Online (Sandbox Code Playgroud)

但我认为我们不应该这样做。
有没有一种特定的方法可以组合 head 和 tail 命令然后保存到文件中?

tail head

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

Emacs:打开一个缓冲区,其中包含一个大文件中 X 到 Y 行之间的所有行

本着与另一个问题相同的精神:cat line X to line Y on a large file

有没有办法从 Emacs 中打开(并在缓冲区上显示)来自巨大文本文件的一组给定的行(例如 lineX和之间的所有行Y)?

例如,打开并在缓冲区中显示文件中第 57890000 行和 57890010 行之间的所有行 huge.txt

更新: 我对至少可以以只读方式打开行(仅用于显示目的)的解决方案感兴趣,尽管如果我也可以编辑行(并保存到原始文件)会很棒。

emacs large-files

10
推荐指数
1
解决办法
2043
查看次数

如何从文件中获取特定行?

我想从一个非常大的文件中提取精确的行。例如,第 8000 行会像这样得到:

command -line 8000 > output_line_8000.txt
Run Code Online (Sandbox Code Playgroud)

text-processing files

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

头,尾,然后线?

从文件中提取由其编号给出的行的最简单方法是什么。例如,我想要 . 的第 666 行somefile。您将如何在终端或 shell 脚本中执行此操作?

我可以看到像head -n 666 somefile | tail -n 1,甚至是一半不正确的解决方案cat -n somefile | grep -F 666,但必须有更好、更快、更强大的解决方案。也许使用更晦涩的 unix 命令/实用程序?

text-processing

10
推荐指数
4
解决办法
1429
查看次数

有没有更快的方法从文件中删除一行(给定行号)?

一个相关的问题是here

我经常需要通过从中间删除几行来编辑大文件。我知道我想删除哪些行,我通常会执行以下操作:

sed "linenum1,linenum2 d" input.txt > input.temp
Run Code Online (Sandbox Code Playgroud)

或通过添加 -i 选项内联。由于我知道行号,是否有避免流编辑并删除特定行的命令?input.txt 可以大到 50 GB。

sed text-processing

7
推荐指数
2
解决办法
9819
查看次数

eval 与管道命令一起使用

我将 file.txt 的命令存储在一行中(此命令在控制台中运行时有效),我想在一行中执行它,例如 sh

cat file.txt | eval
Run Code Online (Sandbox Code Playgroud)

缺什么?任何提示?

如果我有包含许多命令的文件(每行一个)并且我只想执行一个命令(一整行)怎么办?我的第一个想法是:

head -n5 | tail -n1 | eval
Run Code Online (Sandbox Code Playgroud)

bash pipe

7
推荐指数
1
解决办法
1万
查看次数

将行从一个文件复制到另一个文件的简单方法

可能的重复:
cat line X to line Y on a large file

很简单的问题,但似乎找不到简单的解决方法!

我有一个庞大的文本文件,我只需要大约 150 行。线条真的很长,因此在腻子中查看它有点像一场噩梦。我只想将这些行复制到另一个文件中,以便我可以在编辑器中正确查看它。(我无法在编辑器中查看原始文件,因为我的 Windows 机器无法处理它)。

我想要的行从 2000 行左右开始。

谢谢,

large-files text-processing files

6
推荐指数
1
解决办法
11万
查看次数

awk 或 sed 命令在特定行匹配正则表达式,如果成功则退出真,否则为假

我需要确定文件是否在某一行包含某个正则表达式,如果找到则返回 true(退出 0),否则返回 false。也许我想得太多了,但事实证明我的尝试有点笨拙。我有一个解决方案,但我正在寻找我没有想到的其他解决方案。我可以使用 perl,但我希望尽可能保持这种“轻量级”,因为它在 puppet 执行周期中运行。

这个问题很常见:​​在 RHEL6 中,screen 的打包方式将终端宽度限制为 80 个字符,除非您取消注释 132 行。此命令检查该行是否已修复:

 awk 'NR==132 && /^#termcapinfo[[:space:]]*xterm Z0=/ {x=1;nextfile} END {exit 1-x}' /etc/screenrc
Run Code Online (Sandbox Code Playgroud)

注意:如果文件少于 132 行,它必须以 false 退出。

我认为sed在这里会有帮助,但显然你必须做一些奇怪的技巧,比如空替换和分支。尽管如此,我还是希望看到一个 sed 解决方案来学习。也许还有一些我忽略的东西。

编辑 1:添加nextfile到我的 awk 解决方案中

编辑 2:基准 编辑 3:不同的主机(空闲)。编辑 4:错误地将 Gile 的 awk 时间用于优化运行。编辑 5:新长凳

基准

首先,请注意:wc -l /etc/screenrc216。不存在线路时的 50k 次迭代,以挂墙时间衡量:

  • 空操作:0.545s
  • 我原来的 awk 解决方案:58.417
  • 我编辑过的 awk 解决方案(使用 nextfile):58.364s
  • Giles 的 awk 解决方案:57.578s
  • 优化的 perl 解决方案 …

gnu-screen sed awk text-processing puppet

6
推荐指数
2
解决办法
2396
查看次数

如何仅在文件的一行中获取字节数?

我想知道如何在文件的一行中获取字节数。

我知道我可以wc -l用来获取文件中的行数,以及wc -c获取文件中的总字节数。但是,我想要的是仅在文件的一行中获取字节数。

我怎么能做到这一点?

text-processing newlines wc

6
推荐指数
3
解决办法
7784
查看次数

使用 awk、sed 或其他方法从大量文件中打印行的有效方法?

如果我有一个包含 800 万行的纯文本文件,并且我想将 4,000,010 到 4,000,000 行打印到屏幕上,哪个会更有效率:awk 还是 sed?

文本没有模式,不幸的是,数据库不是一种选择。我知道这并不理想,我只是想知道哪个能更快地完成任务。

或者也许有更好的替代 sed 或 awk 的方法?

performance sed awk

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

只有从特定行 X(带有模式)到其他特定行 Y(带有模式)的猫

从“ cat line x 到 line y on a large file ”的一个小问题:

我有一个巨大的文件(2-3 GB)。我只想从具有“foo:”的行到具有“goo:”的行进行猫/打印。假设“foo:”和“goo:”在一个文件中只出现一次;"foo:" 继续 "goo:"。

到目前为止,这是我的方法:

  • 首先,找到带有“foo:”和“goo:”的行: grep -nr "foo:" bigfile
  • 退货123456: foo: hello world!654321: goo: good bye!
  • 一旦我知道这些开始和结束行号,以及差异(654321-123456=530865),我就可以做选择性猫:
  • tail -n+123456 bigfile | head -n 530865

我的问题是如何用表达式(例如,grep ...)有效地替换行号常量?

我可以编写一个简单的 Python 脚本,但只想使用组合命令来实现它。

grep sed awk tail head

3
推荐指数
2
解决办法
2397
查看次数