我的剧本:
while read start_val
do
end_value = "$start_val+10" | bc
sed -n '"$start_value","$end_value"d' <file>
done < in_file
实际上我想通过一些计算使用从输入文件中获取的数据来打印文件的行。
答案 0 :(得分:1)
这是因为变量不会在单引号(')内扩展。试试例子
echo '$HOME'
vs
echo "$HOME"
在sed之后使用单引号的例子也是如此。
答案 1 :(得分:1)
您可以像以下一样使用它:
sed -n "$start_value,$end_value"'d' $file
顺便说一下,不需要在那里使用bc:
while read start_val
do
end_value=$((start_val+10))
sed "$start_value,$end_value"'d' $file
# not sure what above sed is doing since you're not storing output anywhere!
done < in_file
答案 2 :(得分:1)
sed是单行上简单替换的优秀工具,对于任何其他文本操作,只需使用awk:
awk '
NR==FNR { in_file[FNR] = $0; next }
{ for (i=$0; i<=$0+10; i++) print in_file[i] }
' in_file file
不是你的原始脚本使用-n来告诉sed不打印任何行然后d告诉sed删除一些行所以它不会产生任何输出所以我不确定你真正想要做什么,awk脚本是猜测。
答案 3 :(得分:0)
sed -n $start_value','$end_value'p' file
这将打印从$ start_value到$ end_value的所有行。