我试图通过传递变量从文件中删除一组行。
下面是我的文件:
$ cat checking.txt
Starting1
DELETE /*+NESTED_TABLE_SET_REFS+*/ FROM tables1
Ending1
Starting2
update table
set col1=2
where val2=685
Ending2
Starting3
update table
set col1=1
where val1=44
Ending3
因此在上述文件中,我需要删除第一行到第四行的行。 我使用下面的命令,它工作正常。
sed '1,4d' checking.txt
现在,我给变量a
一个值,例如a=4
echo $a
4
现在我尝试使用sed命令
sed "1,${a}d" checking.txt
sed: 0602-404 Function 1, 4d cannot be parsed.
有人可以告诉我如何在此处传递变量吗?
预先感谢
答案 0 :(得分:0)
尝试这种问题的一种方法是以下方法。假设您要删除start
和stop
之间的行,可以编写
awk '(NR<start) || (stop<NR)' start=1 stop=4 file
您提出的建议也行之有效,
start=1
stop=4
sed "${start},${stop}d" file
在您的情况下失败的原因是因为变量a
前面似乎有空格。您会从错误消息和4前面的空格中注意到这一点。