在bash脚本中,我试图从命令输出中提取字符串的多个部分: 输出是:
mpaths (360060e80071df70000301df700000017) dm-41 HP,OPEN-V
mpathes (360060e80071df70000301df7000000b0) dm-314 HP,OPEN-V
mpathdn (360060e80071df70000301df700000095) dm-243 HP,OPEN-V
我的预期输出应该是第一个字段和第二个字段的最后4个字符(排除最后的括号),其余的:
mpaths 0017 dm-41 HP,OPEN-V
mpathes 00b0 dm-314 HP,OPEN-V
mpathdn 0095 dm-243 HP,OPEN-V
谢谢!
答案 0 :(得分:1)
我会用sed:
the_command | sed -r 's/\(.*(....)\)/\1/'
除了括号前的4个字符外,丢弃带括号的单词。
如果你需要坚持朴素的话,那么
the_comand | while read -r a b c d; do echo "$a ${b:${#b}-5:4} $c $d"; done
# ..............................................^^^^^^^^^^^^^^
带下划线的位从位置($ b - 5的长度)开始,取$ b的长度为4的子串。