bash中的正则表达式

时间:2015-10-21 14:03:28

标签: regex bash

我正在开发一个脚本,它利用getopts输入正则表达式作为选项的第一部分。有问题的选项需要运行指定文件的表达式,并将结果打印到命令行。

我将表达式保存在变量中,但后来我不知道如何从那里正确运行表达式。以下是我的代码的适用部分。

#!/bin/bash

file=""
sreg=""
search=false


while getopts c:s: flag; do
  case $flag in
    c) #file name
        if ! [ -w "$OPTARG" ]
        then
                echo > "$OPTARG"
        fi
        file="$OPTARG";
;;

    s) #search for contact (use grep)
        search=true
        sreg="$OPTARG";
;;
    ?)
      exit;
;;
  esac
done
shift $(( OPTIND - 1 ));


if $search
then
       $sreg $file
fi

exit

1 个答案:

答案 0 :(得分:1)

只需使用grep

grep -e "$sreg" "$file"
顺便说一下,你不需要在作业中引用变量。

file=$OPTARG  # same as file="$OPTARG"