首页 > 解决方案 > 根据行号排除/忽略(不删除)第一行和最后一行

问题描述

我正在使用 sed 命令来编辑一些文本文件。

如何排除每个文本文件中的第一行和最后一行以进行编辑。

我浏览了 sed gnu 手册,但我只找到了匹配行范围的命令,即 1,$ 或排除范围,即 1,$!。我只需要排除第 1 行和最后一行 $。我不确定是否可以选择一个范围,即 2、$-1?

这是我的代码。

sed -e '1,$ s/.*/<p>&<\/p>/'' file.txt

标签: linuxsed

解决方案


您不能在 sed 地址中使用数学。但是你可以告诉 sed 在第一行和最后一行什么都不做:

sed -e '1n; $n; s/.*/<p>&<\/p>/'

wheren表示“将下一行输入读入模式空间”(如果是最后一行,它不会读取任何内容)。

(表达式末尾的两个单引号可能是拼写错误,对吧?)


推荐阅读