两个字符之间的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