sed行范围,除了最后一行之外的所有行

Chr*_*Noe 26 sed

您可以指定要操作的行范围.例如,要在所有行上操作(当然是默认值):

sed -e "1,$ s/a/b/"
Run Code Online (Sandbox Code Playgroud)

但我需要操作除了最后一行之外的所有行.你显然不能使用算术表达式:

sed -e "1,$-1 s/a/b/"
Run Code Online (Sandbox Code Playgroud)

(在这种情况下,我使用的是cygwin,如果它有所不同)

Ada*_*amC 48

sed -e "$ ! s/a/b/"
Run Code Online (Sandbox Code Playgroud)

这将匹配除最后一行之外的每一行.通过快速测试确认!

  • 解释一下这里发生的情况:“$”选择最后一行。然后`!` 否定该行范围,以选择除最后一行之外的每一行。然后在结果行范围内执行搜索替换。 (3认同)

gue*_*rda 14

这个命令也有效

sed '$d'
Run Code Online (Sandbox Code Playgroud)

  • 如果他想打印最后一行怎么办? (2认同)