如何使用 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
将工作只要用户不试图惹你。如果用户惹你生气,它会以可怕的方式爆炸。
我正在编写一个脚本来删除 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
将工作只要用户不试图惹你。如果用户惹你生气,它会以可怕的方式爆炸。