如何评估`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
符合预期。
我有一个名为 "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
符合预期。