给定一个数字列表,我希望通过"sed“命令仅显示从2到一个变量(减去1)的范围内的行。如何从表达式中的变量中减去1?我不喜欢在命令前创建另一个变量的解决方案。
echo -e "1\n2\n3\n4\n5\n6\n7\n" | sed -n "3,+$var p"这显示了3-4-5-6 if $var=3。但是如果我想打印5 (3-4-5),我必须从变量($var-1)中减去1。
我想要一个插入($var - 1)的方法
发布于 2018-12-24 23:39:39
您可以在shell中使用$((...))进行算术平均:
echo -e "1\n2\n3\n4\n5\n6\n7\n" | sed -n "3,+$((var-1)) p"
3
4
5我建议使用printf,因为它更便于移植:
printf '%s\n' {1..7} | sed -n "3,+$((var-1)) p"在bash中,您可以使用here-string并避免使用管道:
sed -n "3,+$((var-1)) p" <<< $'1\n2\n3\n4\n5\n6\n7\n'https://stackoverflow.com/questions/53915283
复制相似问题