通过传递变量从AIX中的文件中删除行集

时间:2018-10-04 13:58:36

标签: shell sed

我试图通过传递变量从文件中删除一组行。

下面是我的文件:

$ 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.

有人可以告诉我如何在此处传递变量吗?

预先感谢

1 个答案:

答案 0 :(得分:0)

尝试这种问题的一种方法是以下方法。假设您要删除startstop之间的行,可以编写

awk '(NR<start) || (stop<NR)' start=1 stop=4 file

您提出的建议也行之有效,

start=1
stop=4
sed "${start},${stop}d" file

在您的情况下失败的原因是因为变量a前面似乎有空格。您会从错误消息和4前面的空格中注意到这一点。