UNIX脚本 - 根据位置内容打印数组行(正则表达式)

时间:2016-01-18 17:47:28

标签: regex shell unix

我正在使用KornShell Scripting,我正在将文件拆分为数组

set -A fileArray $(< ${BTEQLOG} )

数组包含如下元素:

{RUN_ID,OPERATOR_ID,CYCLE_DES,PROJECTION_PROJECT_NME,ROW_CREATE_TSP,STATUS_DES,195777,req82565,NII,2016, - ,...}

我需要使用与{6} [0-9]模式匹配的元素,如上面的195777。我考虑过检查一下它是否是一个数字,

for l in ${fileArray[@]}
do
  echo $l
  if [[ $l -gt 10000 ]]; then
    echo $l
  fi
done

但我回来的只是RUN_ID: bad number错误。

有没有办法使用正则表达式来获得我想要的东西?我上面的方式可能有用,但我更喜欢正则表达式只使用该实例。

我试过这个:

typeset -i line=$l  
    if [[ $line = {6}[0-9] ]]; then
        echo $line;
    fi

但遇到了与上面相同的bad number错误。

1 个答案:

答案 0 :(得分:0)

我不是100%确定这是否适用于ksh,但它适用于bash。

if [[ "$line" =~ '^[0-9]{6}$' ]]; then
  echo "$line";
fi