Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何在'sed'命令中计算变量?_Bash_Variables_Sed_Gawk - Fatal编程技术网

Bash 如何在'sed'命令中计算变量?

Bash 如何在'sed'命令中计算变量?,bash,variables,sed,gawk,Bash,Variables,Sed,Gawk,我有一个名为“num”的变量,它保存一个数字。我想在“sed”中这样使用它: 还尝试: sed '1,($num)d' file.txt …这样我可以从1删除行,直到行num 它给了我这样一个错误: sed: -e expression #1, char 4: unknown command: `(' 正确的方法是什么?谢谢。您的shell变量用法不正确。首先,使用双引号可以确保shell将展开变量。其次,用大括号括住所讨论的变量(num),可以确保shell将变量视为$num,而不是随后的

我有一个名为“num”的变量,它保存一个数字。我想在“sed”中这样使用它:

还尝试:

sed '1,($num)d' file.txt
…这样我可以从1删除行,直到行
num

它给了我这样一个错误:

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

正确的方法是什么?谢谢。

您的shell变量用法不正确。首先,使用双引号可以确保shell将展开变量。其次,用大括号括住所讨论的变量(
num
),可以确保shell将变量视为
$num
,而不是随后的
d

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


sed“1,${num}d”file.txt

您的shell变量用法不正确。首先,使用双引号可以确保shell将展开变量。其次,用大括号括住所讨论的变量(
num
),可以确保shell将变量视为
$num
,而不是随后的
d

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


sed“1,${num}d”file.txt

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

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

43
44
45

正如预期的那样。

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

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

43
44
45

正如所料。

我想到了这一点,但我认为双引号
不会扩展
{}
,因为它们只扩展斜杠、反勾号和美元符号。我猜它们也会扩展
{}
?用大括号围绕变量名是shell如何将构成变量的字符与不应属于变量名一部分的任何尾随字符区分开来的。我想到了这一点,但我认为双引号
不会扩展
{}/code>,因为它们只会扩展斜杠、反勾号和美元符号。我猜它们也会扩展
{}
?用大括号围绕变量名是shell如何消除构成变量的字符与不应属于变量名一部分的任何尾随字符之间的歧义