我正在尝试生成代码以重新初始化文件xyz中声明的对象。对于声明如下的每个变量(x表示任何字符,可以重复任意次数): -
Private lst_xxxxxxxxx As xxxxxxxxxxx
或
Private _lst_xxxxxx As xxxxxxxxxxx
我想生成类似的东西: -
lstxxxxxxxx.Clear()
每次出现这种情况,然后换行。
我尝试使用像[^ * [_] lst *]这样的东西来匹配awk中的行,但它最终捕获了不需要的表达式 我可以使用标签中的任何脚本工具来完成这项任务,只需要完成工作。
答案 0 :(得分:2)
您可以使用以下sed
:
sed -nr 's/Private _?(lst)_(\w*) As \w*/\1\2.Clear()/p' file
-n
阻止了打印,-r
只允许抓取()
的群组,然后使用\1
,\2
打印...
$ cat a
how are
Private lst_hey As you
Private _lst_helloooo As blabla
Private _lst_hello
you
i am ok
$ sed -nr 's/Private _?(lst)_(\w*) As \w*/\1\2.Clear()/p' a
lsthey.Clear()
lsthelloooo.Clear()
答案 1 :(得分:1)
问题的标签是awk,看起来你更喜欢awk。
awk '/Private.*As/{gsub(/_/,X,$2);print $2 ".Clear()"}' file
lsthey.Clear()
lsthelloooo.Clear()
如果您需要输出显示为@fedorqui
awk '/Private.*As/{gsub(/_?lst_/,X,$2);print $2 ".Clear()"}' file
hey.Clear()
helloooo.Clear()