转到行号并提取以下匹配括号中的文本
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++;
}
搜索之前提出的问题后。我需要一些帮助来解决我的问题。我想做的可以是任何语言 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++;
}