我正在编写一个脚本来删除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
如何解决这个问题?
答案 0 :(得分:1)
在sed代码中使用用户定义的变量会引发麻烦 - 如果用户输入s/^/rm -rf \//e;
,则无法确定是否要在其中输入数字。而是使用awk:
awk -v line="$index" 'NR != line' filename
如果你真的想用sed做,
sed "${index}d" filename
只要用户不试图惹你,就会。如果用户与你混淆,它会以可怕的方式爆炸。