grep只输出匹配的内容

1、输出eth0的IP地址
ip -4 addr show “eth0” | grep -oP ‘(?<=inet\s)\d+(\.\d+){3}’

2、说明
-o 显示被模式匹配到的字符串。
-P 支持正则表达式

(https://deerchao.cn/tutorials/regex/regex.htm#lookaround)
(?=exp)也叫零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp
(?<=exp)也叫零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp

例如:

如下url,只输出文件名第一个iuap-installer_V6.R2_2305_x86_64_5.tar.gz

echo “wget -c ‘https://aaa.com/ypr/ypr-release/Installer/iuap-installer/V6.R2_2305/5/iuap-installer_V6.R2_2305_x86_64_5.tar.gz?Expires=113344&OSSAccessKeyId=dfaf23233211&Signature=srBESvEJD0x2OQQhPadfgagagfTZ80Ooo%3D’ -O iuap-installer_V6.R2_2305_x86_64_5.tar.gz” | awk ‘/iuap-installer.*.tar.gz/’ | grep -oP ‘(?<=/)iuap-installer_.*.tar.gz(?=\?)’

结果只输出 iuap-installer_V6.R2_2305_x86_64_5.tar.gz

(?<=/) 断言iuap-installer前面会匹配/

(?=\?) 断言iuap-installer后面会匹配?

Categories: 未分类

0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *