我定义了两个变量,如下所示:
var1=$(unzip -c ./*.zip | grep -n "Channel8"| cut -f1 -d":")
var2=$(unzip -c ./*.zip | grep -n "Channel10"| cut -f1 -d":")
我的文件很大,我想使用sed提取$var1
和$var2
之间的行范围。我正在尝试以下
sed -n '/"$var1","$var"2p' $(unzip -c ./*.zip)
但是没有成功。您能否解释为什么以及如何解决?谢谢。
答案 0 :(得分:3)
您可以使用:
unzip -c ./*.zip | sed -n "$var1,$var2 p"
解决方法是:
/
答案 1 :(得分:3)
变量不会在单引号内扩展。另外,您需要将unzip
的输出传递给sed
,而不是将其用作命令行参数。
unzip -c ./*.zip | sed -n "${var1},${var2}p"
但是看来您正在这样做,读取zip文件3次。只需使用要匹配的模式作为范围:
unzip -c ./*.zip | sed -n '/^extracting:.*Channel8/,/^extracting:.*Channel10/p'
答案 2 :(得分:0)
使用双引号扩展变量:
sed -n "${var1},${var2}p" $(unzip -c ./*.zip)