首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWK在两个字符之间打印

AWK在两个字符之间打印
EN

Stack Overflow用户
提问于 2020-09-15 07:41:55
回答 2查看 92关注 0票数 0

当我尝试此命令时:

代码语言:javascript
复制
/usr/bin/curl -s sketch*.zip "https://www.sketch.com/downloads/mac/" |\
    grep 'download.sketchapp.com/sketch-' | awk 'NR==1{print $3}'

输出为:

代码语言:javascript
复制
content="0;URL='https://download.sketchapp.com/sketch-68.2-102594.zip

我希望得到的是:

代码语言:javascript
复制
68.2

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2020-09-15 12:02:29

看起来你想要提取模式后的数字,只对第一个匹配的行。您可以使用一个grep命令:

代码语言:javascript
复制
... | grep -oPm1 '(?<=download.sketchapp.com/sketch-)[^-]+' file

或者,由于这是您想要的第一个curl输出行的第三个字段,您可以使用一个awk命令(使用连字符作为分隔符来拆分字段,以数组并打印中间的元素):

代码语言:javascript
复制
awk '/download.sketchapp.com/sketch-/ && NR==1 {split($3,a,"-"); print a[2]; exit}'
票数 0
EN

Stack Overflow用户

发布于 2020-09-16 22:34:42

使用sed:

代码语言:javascript
复制
/usr/bin/curl -s sketch*.zip "https://www.sketch.com/downloads/mac/" | \
    sed -n 's!.*download.sketchapp.com/sketch-\([^-]*\).*!\1!p;' | \
    head -1

head是为了消除多个匹配。sed命令提取download.sketchapp.com/sketch-之后的非连字符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63893143

复制
相关文章

相似问题

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