作为使用AWK的一部分,我尝试仅在输出中获取MariaDB版本号。
# mysql -V
mysql Ver 15.1 Distrib 10.1.48-MariaDB, for Linux (x86_64) using readline 5.1
# mysql -V | awk -F"-" '{print $1}' | awk '{print $5}'
10.1.48在AWK中有没有办法缩短它,比如避免在第三个管道中再次使用awk '{print $5}‘,而将所有内容都放在一个awk中?
发布于 2020-11-10 02:27:55
你可以使用[ -]+作为FS,意思是空格或连字符的1+:
mysql -V | awk -F '[- ]+' '{print $5}'
10.1.48发布于 2020-11-10 02:33:52
我会将'-' to ' '替换为gsub(),结果如下所示:
mysql Ver 15.1 Distrib 10.1.48 MariaDB, for Linux (x86_64) using readline 5.1
$1 $2 $3 $4 $5 $6 ....和打印字段编号5:
# mysql -V | awk '{gsub("-"," "); print $5}'
10.1.48发布于 2020-11-10 02:39:56
有正则表达式,没有硬编码的字段编号,你可以尝试以下。这应该能够捕获甚至版本是10.1.48.1.2(如果在任何情况下它在那里)
echo "10.1.48" |
awk 'match($0,/([0-9]+\.){1,}[0-9]+/){print substr($0,RSTART,RLENGTH)}'https://stackoverflow.com/questions/64757241
复制相似问题