AIX系统BASH中提取含-lion-的目标子串的sed/awk方案
在AIX Bash环境中提取包含-lion-的子串
使用Sed实现
echo 'opp\car\G-lion-8648\bro' | sed 's/.*\\\([^\\]*-lion-[^\\]*\)\\.*/\1/'
说明
- 正则表达式
.*\\匹配目标子串前的所有字符(直到前一个反斜杠)。 \([^\\]*-lion-[^\\]*\)捕获包含-lion-的子串:[^\\]*表示任意非反斜杠字符,确保只提取两个反斜杠之间的内容。\\.*匹配目标子串后的反斜杠及所有后续字符。- 替换操作将整个输入字符串替换为捕获的目标子串,最终得到
G-lion-8648。
使用Awk实现
echo 'opp\car\G-lion-8648\bro' | awk -F'\\\\' '{for(i=1;i<=NF;i++) if($i ~ /-lion-/) print $i}'
说明
-F'\\\\'将字段分隔符设置为单个反斜杠(由于bash和awk的转义规则,需要四层转义)。- 循环遍历所有以反斜杠分割的字段,检查每个字段是否包含
-lion-。 - 打印匹配的字段,即为所需的目标子串。
内容的提问来源于stack exchange,提问作者Laith Hatabeh
相关产品推荐
相关产品推荐

