AWK在两个字符之间打印

时间:2020-09-14 23:41:54

标签: awk grep

当我尝试此命令时:

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

输出为:

content="0;URL='https://download.sketchapp.com/sketch-68.2-102594.zip

我想要得到的是:

68.2

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

似乎您想仅在第一行插入行中提取出模式后的数字。您可以使用一个grep命令:

... | grep -oPm1 '(?<=download.sketchapp.com/sketch-)[^-]+' file

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

awk '/download.sketchapp.com/sketch-/ && NR==1 {split($3,a,"-"); print a[2]; exit}'

答案 1 :(得分:0)

使用sed:

/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-之后的非连字符。

相关问题