shell截取字符串的方法

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后面会匹配?