【发布时间】:2013-04-13 11:30:16
【问题描述】:
所以我有一个文件,我想剪掉它的前 33 行和最后 6 行。我想要做的是在 cat 命令(cat 文件)中获取整个文件,然后使用“head”和“tail”命令删除这些部分,但我不知道该怎么做。 例如(这只是想法)
cat file - head -n 33 file - tail -n 6 file
我该怎么做呢?是否可以使用“sed”(如何)来做到这一点?提前致谢。
【问题讨论】:
-
您可以使用
sed轻松删除前 33 行:sed '1,33d' file。sed不能做的是从最后一行(或当前行)倒数,所以“最后 6 行”部分不能用sed明智地解决。 (你可以通过保持空间和模式空间经历非凡的旋转,但最好不要去探索它们。) -
@JonathanLeffler 已经用
sed回答了它,但没有使用保留空间。不过,我明白你的意思。 -
@StevenPenny:我没有在心理上完成
sed脚本,是的,有一个解决方案适用于 33 和 6 的情况,只需要模式空间(所以我把它复杂化了)。但是,将处理 25 和 20 的解决方案概括为sed-script 生成中的一个混乱练习,并且处理 200 和 250 不值得考虑。从这个角度来看,使用tail获取除前 N 行之外的所有行,使用head获取除最后 M 行之外的所有行更好(至少您只需调整一个整数值)。