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 拆分字符串的主要内容,如果未能解决你的问题,请参考以下文章
linux shell脚本:拆分字符串,将它们放在一个数组中然后循环它们[重复]
如何在 bash shell 中将一个字符串拆分为多个字符串,至少用一个空格分隔?