【问题标题】:Get N line from unzip -l从 unzip -l 获取 N 行
【发布时间】:2011-09-01 14:49:35
【问题描述】:

我有一个 jar 文件,我需要在 Linux 中执行其中的文件。 所以我需要逐行获取 unzip -l 命令行的结果。 我已设法使用此命令提取文件名:

unzip -l package.jar | awk '{print $NF}' | grep com/tests/[A-Za-Z] | cut -d "/" -f3 ;

但我不知道如何一个接一个地获取文件名来执行它们。 请问我该怎么做?

非常感谢。

【问题讨论】:

  • 我不明白蹩脚的接近投票。由于是非编程问题,shell 编程问题从什么时候开始被认为是题外话? Shell 编程就是编程,所以这个问题绝对属于这里。这不是题外话。 血腥的精英主义者!
  • 我通常用 Java 编写代码,我可以看出 shell 脚本至少同样具有挑战性。

标签: linux awk grep unzip


【解决方案1】:

如果您只需要列中的第一行,请添加一个管道并使用 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

【讨论】:

  • 感谢您的回答。对不起,如果我含糊不清,这正是我需要的。这就是我执行命令后现在所拥有的:file1.class file2.class file3.class file4.class 这就是我想要的:仅 file1.class 然后仅 file2.class ...所以我可以分别执行它们。所以基本上我想得到第一行,然后是第二行,第三行直到结果集结束......对不起,你的命令对我不起作用。
  • 谢谢你,我用 sed 做到了,我会接受你的回答。但是我能知道为什么我的方法不好吗?
  • @Daddou - 谢谢,很高兴看到你得到它。有很多方法可以使用 shell 脚本来解决这个问题。我给了你最通用的,可以在像你这样的场景中使用——或者至少看起来是这样。
  • 既然你在这里 :) 请问我怎样才能抑制 .class 扩展名?您是否有一个好的和清晰的参考站点来编写高效的脚本?非常感谢
  • 我会给你提示 - 你可以使用 sed 将 [A-Za-z].class 替换为反向引用 \1 - 或者你可以使用 grep 和 cut 一起使用,或者 grep 和 awk 一起使用。但是sed会更好。看看你能不能得到一份“Wicked Cool Shell Scripts”的副本
【解决方案2】:

这是我的尝试,也考虑到了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

注意事项:

  • awk 命令还处理 grepcut 的任务
  • awk 命令还处理 .class 扩展名的删除
  • awk 命令的结果通过管道传送到 while read... 命令
  • baseName 表示类文件的名称,去掉了 .class 扩展名
  • 现在,您可以使用 $baseName 做一些事情了

【讨论】:

    猜你喜欢
    • 2011-11-01
    • 2019-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多