如何使用 sed 删除 ubuntu 中的一行,行号存储在变量中?

How to delete a line in ubuntu using sed with linenumber stored in a variable?

我正在编写一个脚本来删除 ubuntu 中的一行文本文件,我的脚本询问用户他们想要删除哪一行并将行号存储到一个变量中。但是,我不知道如何将 sed 与变量一起使用,我搜索了很多关于 sed 的主题。不幸的是,只有这样的东西:

sed '2d' file1 > file2

我想要的是

read index
# I have tried:
sed ($index)d file1 > file2 # didn't work
sed $(index)d file1 > file2 # didn't work

如何解决?

在 sed 代码中使用用户定义的变量是自找麻烦 -- 如果用户输入 s/^/rm -rf \//e;,sed 无法判断您打算将数字放在那里。而是使用 awk:

awk -v line="$index" 'NR != line' filename

如果你真的想用sed来做,

sed "${index}d" filename

将工作只要用户不试图惹你。如果用户惹你生气,它会以可怕的方式爆炸。