我已经使用shell脚本几个月了,所以我还是一个初学者,在以下问题上需要您的帮助:
我有一个浮动许可证报告,其中显示了用户列表、他们的ID、有多少用户在使用许可证、使用许可证的分钟数以及许可证的状态。我需要从中打印已使用15分钟或更长时间的许可证列表,并从该列表中打印每个许可证的使用人数列表,但条件是获得状态为"r"的许可证。第二个列表我将它分配给一个变量,因为我稍后将在代码中使用它。
这是我写的代码:
cat $license_report | awk '{if ($3 >=15) print $1}' | while read line
license_report是我存储报告的位置$3是许可证已使用的分钟数栏,$1是用户ID栏,$2是使用许可证的用户数栏,$4是许可证状态栏。我的方法是使用while循环列出已经使用了15分钟的许可证,然后再次cat报告,grep我从循环中得到的结果,并使用awk获得状态为"r"的许可证
do
running_licenses=$(cat $license_report | grep -w $line| awk '{if ($4 != "r") print $3}')
这段代码运行良好,没有任何错误,但我得到的列表中有空格。所以一开始它给我看了四行,剩下的都是空的。这是我得到的输出
3
5
6
2
#empty space
#empty space
#empty space
#empty space
#empty space
#empty space
#empty space
我想我得到的是空白,因为在我从while循环得到的列表中,并不是所有的许可证都有状态"r",所以它打印的是状态为"r"的许可证,其余的都是空白。
我的问题是,如何在不打印空白的情况下打印状态为"r"的许可证?另外,你知道一个更好的方法来实现我想要做的事情吗?
非常感谢您提前提供的帮助。
为什么只使用awk:
running_licenses=$(awk '$3>=15 && $4 != "r"{print $3}' $license_report)