首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用AWK剪切字段并在结果中再次剪切

使用AWK剪切字段并在结果中再次剪切
EN

Stack Overflow用户
提问于 2020-11-10 02:25:43
回答 7查看 63关注 0票数 0

作为使用AWK的一部分,我尝试仅在输出中获取MariaDB版本号。

代码语言:javascript
复制
# 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中?

EN

回答 7

Stack Overflow用户

发布于 2020-11-10 02:27:55

你可以使用[ -]+作为FS,意思是空格或连字符的1+:

代码语言:javascript
复制
mysql -V | awk -F '[- ]+' '{print $5}'

10.1.48
票数 2
EN

Stack Overflow用户

发布于 2020-11-10 02:33:52

我会将'-' to ' '替换为gsub(),结果如下所示:

代码语言:javascript
复制
mysql  Ver 15.1 Distrib 10.1.48 MariaDB, for Linux (x86_64) using readline 5.1
  $1   $2   $3   $4      $5     $6 ....

和打印字段编号5:

代码语言:javascript
复制
# mysql -V | awk '{gsub("-"," "); print $5}'
10.1.48
票数 1
EN

Stack Overflow用户

发布于 2020-11-10 02:39:56

有正则表达式,没有硬编码的字段编号,你可以尝试以下。这应该能够捕获甚至版本是10.1.48.1.2(如果在任何情况下它在那里)

代码语言:javascript
复制
echo "10.1.48" | 
awk 'match($0,/([0-9]+\.){1,}[0-9]+/){print substr($0,RSTART,RLENGTH)}'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64757241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档