linux – 如何根据文件中的最小行删除前X行
发布时间:2020-12-14 02:25:43 所属栏目:Linux 来源:网络整理
导读:我有一个10,000行的文件.使用以下命令,我将删除第10,000行之后的所有行. sed -i '10000,$d' file.txt 但是,现在我想删除前X行,使文件不超过10,000行. 我想会是这样的: sed -i '1,$x d' file.txt 其中$x将是超过10,000的行数.我有点不知道如何写if,然后是它
我有一个10,000行的文件.使用以下命令,我将删除第10,000行之后的所有行.
sed -i '10000,$d' file.txt 但是,现在我想删除前X行,使文件不超过10,000行. 我想会是这样的: sed -i '1,$x d' file.txt 其中$x将是超过10,000的行数.我有点不知道如何写if,然后是它的一部分.或者,我以为我可以使用原始命令,只是反过来捕获文件? 例如,如果我们只想从底部开始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 当然,如果你知道一种更有效的编写命令的方法,我也会对此持开放态度.您的积极意见得到高度赞赏. 解决方法
为简单起见,我会反转文件,保留前10000行,然后重新反转文件.
它使得文件就地保存更复杂 source=file.txt temp=$(mktemp) tac "$source" | sed '10000 q' | tac > "$temp" && mv "$temp" "$source" 在不反转文件的情况下,您可以计算行数并进行一些算术运算: sed -i "1,$(( $(wc -l < file.txt) - 10000 )) d" file.txt (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |