Sed 命令用于使用行号从文件中删除特定行,与变量一起使用时不会删除

Sed 命令用于使用行号从文件中删除特定行,与变量一起使用时不会删除

我将此命令与变量一起使用

sed '/${LN_NM}/d' file.txt

我正在用它来删除一行file.txt。但是,当在没有变量的情况下使用此命令时,它可以正常工作。

答案1

/regular expression/d将删除与该正则表达式匹配的行(因此,如果$LN_NUM只是一个数字,如 5 或 18,则每行中都有该数字)。如果您想删除给定的行号:

sed "${LN_NM}d" file.txt

如果您想在删除该行后保存文件,请使用ed,而不是sed

ed -s file.txt <<EOF
${LN_NM}d
w
EOF

答案2

正如 @plumo 已经提到的,使用'(单引号)时变量不会被替换

使用"双引号更改命令,这应该可以解决问题。

sed "/${LN_NM}d/" file.txt

相关内容