我有一个jar文件,我需要在Linux中执行它中的文件。 所以我需要逐行获取unzip -l命令的结果。 我已设法使用此命令提取文件名:
unzip -l package.jar | awk '{print $NF}' | grep com/tests/[A-Za-Z] | cut -d "/" -f3 ;
但我无法弄清楚如何一个接一个地获取文件名来执行它们。 我该怎么办?
非常感谢。
答案 0 :(得分:2)
如果您需要列中的第一行,请添加管道并使用head -1
获取第一行
所以你的一个班轮看起来像:
unzip -l package.jar | awk '{print $NF}' | grep com/tests/[A-Za-Z] | cut -d "/" -f3 |head -1;
那会给你第一行
现在,俱乐部的头和尾巴得到第二线。 unzip -l package.jar | awk '{print $NF}' | grep com/tests/[A-Za-Z] | cut -d "/" -f3 |head -2 | tail -1;
获得第二行。
但从编写脚本来看,这不是一个好方法。你需要的是一个循环如下:
for class in `unzip -l el-api.jar | awk '{print $NF}' | grep javax/el/[A-Za-Z] | cut -d "/" -f3`; do echo $class; done;
您可以使用您希望的任何命令替换echo $class
- 并使用$class
获取当前的班级名称。
HTH
答案 1 :(得分:1)
这是我的尝试,也考虑了Daddou删除.class扩展名的请求:
unzip -l package.jar | \
awk -F'/' '/com\/tests\/[A-Za-z]/ {sub(/\.class/, "", $NF); print $NF}' | \
while read baseName
do
echo " $baseName"
done
注意: