删除shell脚本中string的一部分

时间:2018-10-03 18:13:44

标签: linux string shell

我需要通过shell脚本删除一部分字符串。

  

例如:我有这个:VERBOSE [61622] [C-0000051f]我想要这个:   C-0000051f

最后一部分没有括号 我该怎么办?

谢谢!

3 个答案:

答案 0 :(得分:0)

检查awk解决方案

> data="VERBOSE [61622] [C-0000051f] "
> awk -F"[" ' { print $NF } ' <<< $data | awk -F"]" ' { print $1 } '
C-0000051f
>

EDIT1:

更紧凑的版本

> data="VERBOSE [61622] [C-0000051f] "
>  awk -F"[[]|]"  ' { print $4   } ' <<< $data
C-0000051f
>

答案 1 :(得分:0)

我从您的回答here中注意到,您想从文件中提取一些信息,然后在该提取的行上执行一组操作。您在此处提供的整个行可以简化为以下内容:

NUMTEL="$1"
IDCALL=$(awk -F "[][]" -v string="$NUMTEL" '/VERBOSE/ && ($0 ~ string){print $(NF-1);exit}' /var/log/asterisk/full)

答案 2 :(得分:-1)

我可以使用以下脚本来完成所需的工作。

!/ bin / bash

NUMTEL = $ 1

IDCALL = /usr/bin/grep "VERBOSE" /var/log/asterisk/full | /usr/bin/grep "$NUMTEL" | /usr/bin/head -n1 | /usr/bin/awk '{print $4}' | /usr/bin/cut -d] -f2 | /usr/bin/sed -e 's/\[//g'

回显$ IDCALL

谢谢