Shell脚本调用Python实现多分隔符字符串切分函数

运用背景

在某些场景下,我们会利用shell文本处理分析半结构数据,在单分隔符下cut或是一个不错的选择。但在多分隔符下cut就over了,这时很多小伙伴可能就想到了sed、awk甚至是perl之类的工具。但本人尝试之后却依旧觉得不尽人意,特别是在分隔符包含 “$” 这样的特殊符号背景下,在此采用“’”符号取消 “$” 转义。

基于上述背景,在此采用shell调用python的方式封装实现了一个自定义字符串切割函数,支持多分隔符,返回切分结果数组对应下标的值。其他运用场景,希望本文能起到抛砖引玉的效果。

代码实现

Python:#pyFun.py

#pyFun.py
#str : the string you wanna split
#delimiter
#index 
def mySplit(str,delimiter,index):
    #print("str:" +str+ " delimiter: "+ delimiter +"index: "+index)
    x = str.split(delimiter)[int(index)]
    return x

Bash

#pyCall.sh
#define our split function
selfSplit(){
    str=$1
    delimiter=$2
    index=$3
    export splitResult=$(python -c 'import pyFun; print pyFun.mySplit("'$str'","'$delimiter'","'$index'")')
}

测试代码

#pyCall.sh
#test
#str='Welcome@~$202021@~$China'
str="'`sed -n "$1p" t.txt`'"
delimiter='@~$'
index=1
selfSplit "$str" "$delimiter" "$index"
echo "check splitResult: $splitResult"

t.txt

welcome@~$202021@~$China

结果截图如下
在这里插入图片描述


版权声明:本文为qq_34901049原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。