这个表达式:
FN=27
LN=145
cat $FILENAME | sed -n $FN,$LNp
因以下错误而失败:“sed:-e表达式#1,字符3:意外的`,'”但是当我使用实际数字时,我得到了预期的结果。没有嵌入特殊字符,也没有尾随或前导空格
cat $FILENAME | sed -n 27,145p
这里发生了什么?
答案1
除非$LNp
设置了变量,否则sed
命令将为(假设默认值为 IFS,因为您忘记引用变量):
sed -n 27,
在这里,您想要:
sed -n "$FN,${LN}p" < "$FILENAME"
告诉 shellp
不是变量名的一部分(sed -n "$FN,$LN"p
也可以)。
或者更有效地在找到第thsed
行后立即停止:$LN
sed "$FN,\$!d;${LN}q" < "$FILENAME"
或者
tail -n "+$FN" < "$FILENAME" | head -n "$((LN - FN + 1))"