从命令输出中提取多个字符串

时间:2015-12-02 21:14:56

标签: bash

在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

谢谢!

1 个答案:

答案 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的子串。