如何评估`sed`命令中的变量?

How to evaluate variable within `sed` command?

我有一个名为 "num" 的变量,它包含一个数字。我想像这样在 "sed" 中使用它:

sed '1,$(num)d' file.txt

也尝试过:

sed '1,($num)d' file.txt

...这样我就可以删除从 1 到行 num 的行。

它给我这样的错误:

sed: -e expression #1, char 4: unknown command: `('

正确的做法是什么?谢谢

您的 shell 变量用法不正确。首先,使用双引号确保 shell 将扩展变量。其次,用大括号包围所讨论的变量 (num) 确保变量将被 shell 视为 $num,而不是随后的 d 被 glommed .

以下是您应该如何指定要执行的操作:

sed "1,${num}d" file.txt

您可以使用单引号但需要连接脚本

num=42; seq 1 45 | sed '1,'$num'd'

将打印

43
44
45

符合预期。