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

时间:2015-09-15 19:41:50

标签: bash variables sed gawk

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

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

也尝试过:

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

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

它给我一个这样的错误:

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

这样做的正确方法是什么?感谢。

2 个答案:

答案 0 :(得分:3)

您的shell变量用法不正确。首先,使用双引号确保shell将扩展变量。其次,使用大括号围绕有问题的变量(num)可确保shell将变量视为$num,而不是随后的d变亮。

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

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

答案 1 :(得分:0)

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

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

将打印

43
44
45

正如所料。