shell 拆分字符串

Posted 魏小言

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell 拆分字符串相关的知识,希望对你有一定的参考价值。

文章目录

shell 拆分字符串

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

业务中,尤其是链路长的场景,会把日志数据以某种格式进行拼接、聚合到 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

以上是关于shell 拆分字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何在shell中拆分字符串并获取最后一个字段

shell 拆分字符串成数组 放入数组

linux shell脚本:拆分字符串,将它们放在一个数组中然后循环它们[重复]

如何在 bash shell 中将一个字符串拆分为多个字符串,至少用一个空格分隔?

如何避免作为 sql 查询输出的一部分返回的字符串值被拆分为 bash/shell 脚本中数组中的不同字段

unix shell 如何拆分文件