两个字符之间的AWK打印

两个字符之间的AWK打印,awk,grep,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 我希望得到的是: 6

当我尝试此命令时:

/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

任何帮助都将不胜感激。

您似乎希望提取图案后的数字,仅用于第一行。您可以使用一个
grep
命令:

... | grep -oPm1 '(?<=download.sketchapp.com/sketch-)[^-]+' file
使用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-

之后提取非连字符,类似于
..|awk'NR==1{sub(/^.*-/,“”,$3);sub(/-.$/,“”,$3);print$3}
<代码>$0可能与
$3
sub()
s一样工作。祝你好运。例如:
grep“something”| awk'NR==1{print}'
可以写入一个命令
awk'/something/&(NR==1){print}'
…或者你可以用一个grep得到你想要的东西来打印模式后面的内容,例如
grep-oP'(?)?
/usr/bin/curl -s sketch*.zip "https://www.sketch.com/downloads/mac/" | \
    sed -n 's!.*download.sketchapp.com/sketch-\([^-]*\).*!\1!p;' | \
    head -1