【发布时间】:2015-04-09 16:20:42
【问题描述】:
给定一个名为“people.txt”的文本文件,其中包含:
Anne
Bob
Carl
Daphne
Erwin
Gary
Heather
如何使用 sed 命令或类似的单行命令,它只指定一组不连续的行号,以便将内容过滤到此结果:
Bob
Erwin
Heather
(注意:忽略它们是按字母顺序排列的事实)
请注意,我使用的真实文件有超过 100K 行,所以答案应该考虑效率。
我知道我可以使用:
sed '5q;d' people.txt
只获得第 5 行(“Erwin”),但是这个参数是否有变体,我可以指定任意行号的列表?
我认为单独使用 sed 是可能的,但即使在阅读完 man sed 之后,我也无法弄清楚这一点。我一直在寻找与此非常接近的其他答案,但几乎所有答案都处理仅获取单行或连续行(一系列行),或者使用更复杂的 bash 脚本;例如,"Quick unix command to display specific lines in the middle of a file?" 和 "How can I print specific lines from a file in Unix?"。
【问题讨论】:
-
不连续的行号是什么意思?