【发布时间】:2016-11-11 21:00:22
【问题描述】:
我有一个包含 10,000 行的文件。使用以下命令,我将删除第 10,000 行之后的所有行。
sed -i '10000,$ d' file.txt
但是,现在我想删除前 X 行,使文件不超过 10,000 行。
我想应该是这样的:
sed -i '1,$x d' file.txt
$x 是超过 10,000 行的行数。我有点纠结于如何写 if,然后是它的一部分。或者,我想我可以使用原始命令,然后只使用 cat 反向文件?
例如,如果我们只想要底部的 3 行(经过一些有用的答案后似乎更简单):
输入:
Example Line 1
Example Line 2
Example Line 3
Example Line 4
Example Line 5
预期输出:
Example Line 3
Example Line 4
Example Line 5
当然,如果您知道一种更有效的命令编写方式,我也会对此持开放态度。非常感谢您的积极投入。
【问题讨论】:
-
啊,好的,我现在加一下哈哈。
-
为什么一个简单的
tail -n 3 file不适合你? -
是的,@kaylum 提供了这一点。我选择了
sed选项,因为它已经到位并且已经是我正在努力解决的问题。 -
sed 用于在单个行上进行简单替换,仅此而已。不要仅仅因为它有一个
-i选项告诉它动态创建一个临时文件而不是你必须命名它,就被引诱将它用于其他东西(例如删除文件的部分)。只需为每项作业使用正确的工具,如果您必须自己命名临时文件,与必须弄清楚每项作业要跳过哪些复杂的 sed 语法箍相比,这没什么大不了的。