0

次のデータINPUTを含むテキストファイルがあります

ChainCtrlBuildChain() : ChainController.c
ChainCtrlDumpChain() : ChainController.c
ChainCtrlDumpChanCallback() : ChainController.c
ChainCtrlExit() : ChainController.c
ChainCtrlGetBitStreamChan() : ChainController.c
ChainCtrlInit() : ChainController.c

関数名だけを別のテキスト ファイルにコピーしたい。

出力が必要です

ChainCtrlBuildChain
ChainCtrlDumpChain
ChainCtrlDumpChanCallback
ChainCtrlExit
ChainCtrlGetBitStreamChan
ChainCtrlInit

user4035 コードを使用して

  $text =~ s/\s:\s.*//g;

関数本体の外側に「()」を取得しました

ChainCtrlBuildChain()
ChainCtrlDumpChain()    

ヒント。どうすればいいですか。

関数名とクラス名はユーザー入力によって異なりますので、一般化されたコードを作成する必要があります。

4

4 に答える 4

3
perl -p -e 's/\(.*//' input.file

左括弧とその後にあるものを探して、すべて削除します。この-p手段は、入力ファイルの引数または標準入力を 1 行ずつ読み取り、各行の後に、オプション$_の引数のスクリプトが実行された後に残っているものを出力します。-e

于 2013-08-01T06:52:18.740 に答える
0
perl -lne 'print $1 if(/(.*)\(\)/)' your_file

または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
> 
于 2013-08-01T07:51:48.423 に答える