Regex Perl-只需要复制函数名

Regex Perl-只需要复制函数名,regex,perl,Regex,Perl,我有一个包含以下数据的文本文件 输入 我只想将函数名复制到另一个文本文件中 所需产量 ChainCtrlBuildChain ChainCtrlDumpChain ChainCtrlDumpChanCallback ChainCtrlExit ChainCtrlGetBitStreamChan ChainCtrlInit 通过使用user4035代码 $text =~ s/\s:\s.*//g; 我得到了“()”的外部函数体 ChainCtrlBuildChain() ChainCtrl

我有一个包含以下数据的文本文件 输入

我只想将函数名复制到另一个文本文件中

所需产量

ChainCtrlBuildChain
ChainCtrlDumpChain
ChainCtrlDumpChanCallback
ChainCtrlExit
ChainCtrlGetBitStreamChan
ChainCtrlInit
通过使用user4035代码

  $text =~ s/\s:\s.*//g;
我得到了“()”的外部函数体

ChainCtrlBuildChain()
ChainCtrlDumpChain()    
任何提示,我怎么做

我需要做一个通用的代码,因为函数名和类名将根据用户输入的不同而有所不同

perl -p -e 's/\(.*//' input.file
查找一个开括号及其后的任何内容,然后将其全部删除。
-p
意味着逐行读取输入文件参数或标准输入,并在每行之后,将参数中的脚本执行到
-e
选项后剩下的
$\ucode>打印出来


查找一个开括号及其后的任何内容,然后将其全部删除。
-p
意味着逐行读取输入文件参数或标准输入,并在每行之后,将参数中的脚本执行到
-e
选项后剩余的
$\ucode>打印出来。

您可以使用
拆分
来获得所需的输入部分:

perl -ne 'print +(split(/\(/))[0] . "\n";' inputfile

您可以使用
split
获取输入的所需部分:

perl -ne 'print +(split(/\(/))[0] . "\n";' inputfile

它从每行捕获第一个字符串并打印

perl -nE 'say /(\w+)/' file
如果在方法名之前还有类名(即
class::method


它从每行捕获第一个字符串并打印

perl -nE 'say /(\w+)/' file
如果在方法名之前还有类名(即
class::method

或在awk中:

awk -F"\(" '{print $1}' your_file
测试如下:

> perl -lne 'print $1 if(/(.*)\(\)/)' temp
ChainCtrlBuildChain
ChainCtrlDumpChain
ChainCtrlDumpChanCallback
ChainCtrlExit
ChainCtrlGetBitStreamChan
ChainCtrlInit
> awk -F"\(" '{print $1}' temp
ChainCtrlBuildChain
ChainCtrlDumpChain
ChainCtrlDumpChanCallback
ChainCtrlExit
ChainCtrlGetBitStreamChan
ChainCtrlInit
> 
或在awk中:

awk -F"\(" '{print $1}' your_file
测试如下:

> perl -lne 'print $1 if(/(.*)\(\)/)' temp
ChainCtrlBuildChain
ChainCtrlDumpChain
ChainCtrlDumpChanCallback
ChainCtrlExit
ChainCtrlGetBitStreamChan
ChainCtrlInit
> awk -F"\(" '{print $1}' temp
ChainCtrlBuildChain
ChainCtrlDumpChain
ChainCtrlDumpChanCallback
ChainCtrlExit
ChainCtrlGetBitStreamChan
ChainCtrlInit
> 

感谢您的帮助。我是perl新手,正在尝试理解regex。感谢您的帮助。我是perl新手,正在尝试理解regex。这对示例数据很有效,但注释表明可能也有类名,因此可能会出现诸如
SomeClass::MemberFunction()
之类的名称,在这种情况下,这会丢失重要信息。这也是在class::method出现时使用的一种很好的方法。这对示例数据很有效,但注释表明可能也有类名,因此可能会出现诸如
SomeClass::MemberFunction()
之类的名称,在这种情况下,这会丢失重要信息。这也是在class::method出现的情况下很好的方法。虽然这会起作用,但我认为它不是一种非常惯用的编写方法。虽然这会起作用,但我认为它不是一种非常惯用的编写方法。也许perl使用非贪婪正则表达式,而在输出中使用换行符也许perl使用非贪婪正则表达式,在输出中使用换行符