我有来自lmstat输出的以下行:
Users of ccmpsuite: (Total of 2 licenses issued; Total of 1 license in use)
"ccmpsuite" v2016.03, vendor: cdlmd
floating license
<username> <nodename> /dev/tty (v2015.02) (<hostname>/1999 436), start Fri 7/17 21:41
我想以某种方式提取&#39; 2&#39;和&#39; 1&#39;从第一行获得总许可证和使用的总许可证,以便在其他地方使用。据我所知,lmstat不支持任何最小文本或xml输出。我知道我可以用这个来唤醒整行:
awk '/^[ ]*Users of[ ]*/'
我如何提取&#39; 1&#39;以及&#39; 2&#39;?
答案 0 :(得分:2)
您可以使用grep -oP
来获取两个计数:
grep -oP '\d+(?= license)' file
2
1
答案 1 :(得分:2)
因为您使用awk标记了问题:
awk '/Users of ccmpsuite:/{print $6,$11}' input.txt
2 1
击:
#!/bin/bash
while read line
do
if [[ $line =~ "Users of ccmpsuite:" ]]
then
match=($line)
echo ${match[5]}
echo ${match[10]}
fi
done < input.txt
答案 2 :(得分:0)
Awk没有捕获正则表达式分组,但perl确实:
perl -n -e'/Total of (\d+) licenses/ && print $1'
将打印许可证数量:
perl -n -e'/Total of (\d+) license/ && print $1'
将打印正在使用的许可证数量。