我正在尝试将 bash 脚本完全移植到 python。我这样做是为了尝试进入 python。
bash 脚本的一部分根据 regex 处理捕获部分。
这就是我在 bash 脚本中的做法:
搜索正则表达式 [multiline] 例如:m/^[^\S\n]*\([\w0-9,*\s]*\)\s*\{[^\S\n]*\}/gm
//不是实际的正则表达式!
获取上述正则表达式的起始行号
用于awk
在 while 循环中从行号开始读取。扫描每一行以查找方法 start 即[
。如果找到增量计数变量,[
否则如果]
遇到 a 则减少计数器。如果计数器 == 0,则打印NR
并退出循环。这给了我部分结束线编号。
我再一次awk
把这个部分分开了。
nawk -v start=$var -v end=$var2 'NR >=start && NR <=end' file.sci
要处理的示例文件:
!!--Blah
!!
!!
method1 {fn->23}[ --line 12
if [ ] ;else[]
] --line 14
method2 {fn->23,f2->65}[
if [ ] ;else[i=0]
[[[[]]]]
]
bashcript 所做的是它给了我方法 1 开始说第 12 行,然后这个开始是给 awk 函数,它逐行读取并保持计数器打开[
,]
最后给方法 1 的第 14 行。然后使用该行我将方法剥离到另一个文件中。
我已经完成了正则表达式部分,但我不知道行号的方法在 python 中是否可行。我确信存在比提到的更好的算法。如果有人可以指导我正确的方向或提供示例代码或指针,我将不胜感激。