デリミタの一部として正規表現を使用して、ファイルを解析し、そこから特定のフィールドを取得する必要があります。これを行うにはperlを使用できると思いました(?)。問題は、それを適切に機能させることができないことです。これは、もう1つの空白(この場合は1つ以上のスペース)で区切られたフィールドを印刷できると私が考えた1つのライナーです。
bash_prompt> perl -anF'/ +/' -e 'print "$F[0], $F[-1]\n"' build_outputfile
出力ファイルはメイクファイルからのものです。
ここでは、最初のトークンと最後のトークンを出力したいと思います。したがって、私の場合、どのコンパイラが使用され、どのファイルがコンパイルされましたか。もっと良い方法があるかもしれませんが、私の perl ワンライナーが機能しない理由が気になります。
とにかく、正規表現 '/ +/ は機能していないようです。予期しない出力が得られます。おそらく、F は実際には正規表現を必要としないのでしょうか? F の引数を 1 つのスペースを含む '/ /' に置き換えても、まだ期待どおりの出力が得られません。
誰でも助けることができますか?ありがとう。
試してみるためのテストコードを次に示します。ファイルに保存します。
g++ -c -g -Wall -I/codedir/src/CanComm/include -I/home/codemonkey/workspace/thirdparty/Boost -Wno-deprecated SCMain.cpp
g++ -c -g -Wall -I./object/include -I./wrapper/include -I./Properties/include -I./Messaging/include -I/codedir/src/Logging/sclog/include ./object/SCObject.cpp ./object/RandNumGenerator.cpp ./object/ScannerConstraints.cpp ./object/ThreadSync.cpp ./object/SCData.cpp ./object/AirScanData.cpp ./object/ClusterData.cpp ./object/WarmupData.cpp ./object/SCCommand.cpp ./object/ScanCommands.cpp ./object/RCCommands.cpp ./object/ReconData.cpp ./object/UICommTool.cpp ./object/UIMsg.cpp ./object/UI2SCConversion.cpp ./object/RCMsg.cpp ./object/RCMessageInfo.cpp ./object/Utils.cpp ./object/ZBackupTable.cpp ./object/ZBackupFactory.cpp
g++ -c -g -Wall -I./Properties/include -I/codedir/src/Logging/sclog/include -I./object/include -I/home/codemonkey/workspace/thirdparty/Boost ./Properties/PropertyMap.cpp