我目前正在使用变量行输入运行sed,以从文件中删除一定数量的行。
sed -i '1,'$SomeVariable'd' somefile.extention
现在,如果我在cygwin中输入它,这将按预期工作。但是,如果我通过shell脚本运行它,它不会按预期删除行。它仍然会收集它们的内容,但之后不会删除它们。
在寻找解决方案时,我遇到了Why does sed behave differently in a shell script?
这不能回答我的问题,因为我已经确认bash正在运行sed而不是gsed。
答案 0 :(得分:-1)
据我所知,sed
在不同的系统中表现不同,它们是Mac version 10.11.6
和CentOS 6.5
。但是,我不知道原因或有解决方案。但我知道相同的版本sed
,它会在CentOS 6.5
和Ubuntu 14.04
中输出相同的结果。
回到你的问题,我认为它来自引号。对于您输入的内容,您使用了相同单引号'1,'$SomeVariable'd'
,sed
会对其进行插值(1,)($SomeVariable)(d)
,括号用于解释序列。所以我的建议是你可以尝试使用'1,${SomeVariable}d'
。