shell 拆分字符串

文章目录

    • shell 拆分字符串
      • shell
        • {s//sep/}

shell 拆分字符串

shell 拆分字符串_第1张图片

最近有新人一直来询问如何解析业务中的日志数据,这里就简单记录一下。希望能给予你们帮助!

业务中,尤其是链路长的场景,会把日志数据以某种格式进行拼接、聚合到 Log、Trace 中,Metrics 倒是很少采取这种手段。当研发人员对日志进行处理时,需要明晰其内部结构,就要去拆分数据,化大为小,恢复原数据。那么如何进行拆分呢?可能是有些同学的困惑。

shell

有同学看了上面的情景,可能觉得不是什么问题。在各种开发语言中都包含了 Json 及 以某字符拆分、拼接的 内置或包 函数,十分方便,编写代码,跑一下原数据就出来了。

没错,这也是正常生产环境中使用的方式之一。

但是,在非生产环境,需要检索、观察分析原数据时,这样的手段略显繁琐,尤其是拼接结构相对复杂的时候。这里简单提供一 shell 脚本,按输入拆分字符串。更简洁,灵活,轻量。

复杂字符串:二/三级字段以 \t 为分隔符拼接后,一级字段以 001 为分隔符…

{s//sep/}

脚本 split.sh 内容如下:

#!/bin/bash

s=$1
sep=$2

function deal(){
  arr=(${s//$sep/ })
  echo ${arr[@]}
}

deal

执行方式:

sh split.sh "1.1\t1669623112723\t\t\t10.93.192.245_10.93.192.249" '\\t'

拆分结果:

1.1 1669623112723 10.93.192.245_10.93.192.249

你可能感兴趣的:(linux,linux,shell,split)