私の実行可能ファイルのこの ldd 出力を検討してください。
linux-gate.so.1 => (0x003a5000)
libtcmalloc_minimal.so.0 => ./libtcmalloc_minimal.so.0 (0x00710000)
libBIBusTK.so => ./libBIBusTK.so (0x00b68000)
libCCLIDOM.so => ./libCCLIDOM.so (0x00a08000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00357000)
ここで興味深いのは、各行のこの部分文字列です。
./libtcmalloc_minimal.so.0
./libBIBusTK.so
./libCCLIDOM.so
/usr/lib/libxcb.so.1
したがって、これを達成するためにawkを使用しています。最初に試しました:
ldd ./BIBusTKServerMain | awk -F "=>" '{print $2}'
これにより、「=>」記号の後のすべての部分文字列が得られます。
次に、もう 1 つの手順を試しました。
ldd ./BIBusTKServerMain | awk -F "=>" '{print $2}' | awk -F "(0x" '{print $1}'
エラーがスローされます:
awk: fatal: Unmatched ( or \(: /(0x/
私がこれを試した場合:
ldd ./BIBusTKServerMain | awk -F "=>" '{print $2}' | awk -F "0x" '{print $1}'
以下を生成します。
./libtcmalloc_minimal.so.0 (
./libBIBusTK.so (
./libCCLIDOM.so (
/usr/lib/libxcb.so.1 (
元の awk スクリプトのどこが間違っていたのでしょうか? 私はsedの代替も試しました:
sed -n '/=>/,/\(0x/p' lddInfo.txt
どちらも機能しません...