转到行号并提取以下匹配括号中的文本

Go to line number and extract text in following matching brackets

搜索之前提出的问题后。我需要一些帮助来解决我的问题。我想做的可以是任何语言 Bash、Perl、Python 等。我刚刚开始使用 Bash 和 Perl。

我读了一个文本文件,然后我想编写一个脚本,如果我

例如,如果有代码。

INPUT : 我给行号(例如60)作为输入

。 . .

//line number 60

      //convolving F

        j=0;
        while(j<N_sim)
    {
      Vect_F[j]=0;
      for (k=0; ((k<N_col) & ((j-k)>=0)); k++)
        Vect_F[j]+=F[i][k]*Vect_Up[j-k];
            j++;
    }

      //adding the results to the y matrix

      for (j=0; j < N_sim; j++)
    y[j]+=Vect_F[j];
    }
}

输出

      .     {
  Vect_F[j]=0;
  for (k=0; ((k<N_col) & ((j-k)>=0)); k++)
Vect_F[j]+=F[i][k]*Vect_Up[j-k];
          j++;
      .     }

我应该遵循什么方法?

使用 regex 扩展模块检查支架的平衡。

import regex
m = input("Enter the line number:\n")
with open('file') as f:
    fil = f.readlines()[int(m)-1:]
    print(regex.search(r'{(?:(?0)|[^{}])*}', ''.join(fil)).group())

上述代码如何工作的示例。

$ cat file
foo        
while(j<N_sim)
    {
      Vect_F[j]=0;
      for (k=0; ((k<N_col) & ((j-k)>=0)); k++)
        Vect_F[j]+=F[i][k]*Vect_Up[j-k];
            j++;
    }
$ python3 f.py
Enter the line number:
3
{
      Vect_F[j]=0;
      for (k=0; ((k<N_col) & ((j-k)>=0)); k++)
        Vect_F[j]+=F[i][k]*Vect_Up[j-k];
            j++;
    }