awk 打印结束括号的行号

awk 打印结束括号的行号

我有一个文件

1.txt

ejryheiur

rewurie

(

ejwhrejkrh

rewrhwe

rewkhrwe

rewhkr

)

dfhgsdfh

rqwergjweg

jhwgrh

(

rehgwrwhe


rhwejkr

)

使用这个 nawk 脚本

   nawk '
       BEGIN { 
       count1=1  ;
       count2=0 ;
       }
       {
       if ((NR > 2) && ( $0 ~/(/) ) 
       {
            count1++ ;
            if ((NR > 2) && ($0 ~/)/)) 
            {
                count2++ ; 
                if (count1 == count2) 
                {
                  print NR ; 
                  exit 
                }
            }
        }
        else 
        {
            if ((NR > 2) && ($0 ~ /)/)) 
            {
                count2++ ; 
                if (count1 == count2) 
                {
                    print NR;
                    exit
                }
            }
        }
       }
   ' 1.txt

但我收到了这个错误:

nawk:正则表达式中的主键非法(在源代码行号 7 上下文是

if ((NR > 2) && ($0 >>>  ~/(/ <<< ))

答案1

您需要转义正则表达式中的圆括号。

用反斜杠:

if ((NR > 2) && ( $0 ~/\(/) )

或者使用方括号:

if ((NR > 2) && ( $0 ~/[(]/) )

相关内容