怎么从一个文件中提取keyword?该关键字的定义符合pattern
如何从一个文件中提取keyword?该关键字的定义符合pattern
应用背景:我用Modelica作为开发语言,进行机电产品的组件进行描述。代码编写工具是vim,我想利用vim的字典补全功能(通过YouCompleteMe作为前端补全工具)。但是前提是:我先自己生成一个字典。
问题提出:Modelica对不同的类有不同的定义方式,现在假定我要提取的“关键字”是type类型,这种类型的“声明/定义”方式如下:
请问如何才能从符合以上模式的字符串中,提取出Keyword,存入文件?
我做过的尝试:我开始是在vim中,在查找模式下,通过下列”正则表达式“匹配出了该模式:
该查找命令可以找出符合一下两种情况的Modelica的类定义(从中取两个例子):
但是我不知道如何进一步将上述中的[Keyword],如FirstOrderTemperatureCoefficient、SecondOrderTemperaturCoefficient给提取出来。
我的思考:我觉得用sed、awk效果可能更好(因为可以批处理),但是请问用awk(或者sed)该如何做?
谢谢
------解决思路----------------------
grep "type[a-zA-Z0-9 _]*=" test.txt
------解决思路----------------------
awk '{print $2}'
------解决思路----------------------
sed 's/=//g'
应用背景:我用Modelica作为开发语言,进行机电产品的组件进行描述。代码编写工具是vim,我想利用vim的字典补全功能(通过YouCompleteMe作为前端补全工具)。但是前提是:我先自己生成一个字典。
问题提出:Modelica对不同的类有不同的定义方式,现在假定我要提取的“关键字”是type类型,这种类型的“声明/定义”方式如下:
type Keyword = Real(...)
请问如何才能从符合以上模式的字符串中,提取出Keyword,存入文件?
我做过的尝试:我开始是在vim中,在查找模式下,通过下列”正则表达式“匹配出了该模式:
type\s[a-zA-Z0-9]*\s\==
该查找命令可以找出符合一下两种情况的Modelica的类定义(从中取两个例子):
type FirstOrderTemperatureCoefficient = //等号左边带空格的也能找出来。
type SecondOrderTemperaturCoefficient= //注意等号左边没有空格
但是我不知道如何进一步将上述中的[Keyword],如FirstOrderTemperatureCoefficient、SecondOrderTemperaturCoefficient给提取出来。
我的思考:我觉得用sed、awk效果可能更好(因为可以批处理),但是请问用awk(或者sed)该如何做?
谢谢
------解决思路----------------------
grep "type[a-zA-Z0-9 _]*=" test.txt
------解决思路----------------------
awk '{print $2}'
------解决思路----------------------
sed 's/=//g'