捕获字符串并打印下一个字符。

时间:2018-12-08 13:16:51

标签: ksh

我尝试了几种选择,但对我的情况不起作用。我的要求是 假设我在文件中有一个参数,并且想要捕获以下详细信息并运行shell脚本(ksh)。

PARAMETR=aname1:7,aname2:5

该参数包含两个用逗号分隔的值,每个值用冒号分隔。

因此,想要像将字符串匹配为aname1一样处理它,然后同时在不同的变量$v1=aname1$v2=7中打印。如果将字符串搜索为aname2,然后搜索$v1=aname2$v2=5,则其他值也是如此。

先谢谢您。

3 个答案:

答案 0 :(得分:1)

这将满足您的要求

    #!/bin/ksh

    typeset -A valueArray

    PARAMETR=aname1:7,aname2:5

    paramArray=(${PARAMETR//,/ })

    for ((i=0;i<=${#paramArray[@]};i++)); do
            valueArray[${paramArray[$i]%:*}]=${paramArray[$i]#*:}
    done

    for j in ${!valueArray[@]}; do
            print "$j = ${valueArray[$j]}"
    done

希望它能提供帮助

答案 1 :(得分:0)

首先将线分成两组,然后处理每组。

import pandas as pd
datadict = {
        'Time':['2018-12-10 20:00:25.855',
                '2018-12-10 20:09:26',
                '2018-12-10 20:13:27.31',
                '2018-12-10 20:23:28'],
        }
df = pd.DataFrame(datadict)

df['Time'] = [row[11:row.find('.')] if '.' in row else row[11:] for row in df['Time']]
print (df)
       Time
0  20:00:25
1  20:09:26
2  20:13:27
3  20:23:28

结果:

echo "${PARAMETR}" | tr "," "\n" | while IFS=: read -r v1 v2; do
  echo "v1=$v1 and v2=$v2"
  done

答案 2 :(得分:0)

我如下使用。

specialList=$(echo "${SPECIAL_DB_CASE}" | tr '[:upper:]' '[:lower:]' |grep -E -o "${ORACLE_SID}.{0,2}")

specialListdb=$(echo ${specialList}|cut -d: -f1)

specialList_r=$(echo ${specialList}|cut -d: -f2)

但是新问题是即时更新,脚本未按计划从cron执行。