ファイルから関数を抽出するには? [閉鎖]

ファイルから関数を抽出するには? [閉鎖]

私のコードからC関数を抽出するコマンドを探しています。次のようになります。

$ grep -func "MyFunction" foo.c

int MyFunction(int i) {
    return i+1;
}

私は正規表現で抽出できることを知っていますが、もっとユーザーフレンドリーな方法を探しています。

ベストアンサー1

ファイルの構文が正しいと仮定すると、次の形式を使用して形式を指定し、関数を見つけてindent抽出するプロセスをはるかに簡単にすることができます。

  • を使用すると、行indentの最初の列に関数名を入力し、それに続く括弧を入力します。
  • その後、'}'最初の列に現れる次の閉じカッコが関数を終了します。

indent以下はGNU sumを使った簡単な例ですawk

#!/bin/sh
# $1 = file name
# $2 = function name
indent -st -orig "$1" | awk '
BEGIN { state = 0; last = ""; }
$0 ~ /^'$2'\(/ { print last; state = 1; }
        { if (state == 1) print; }
$0 ~ /^}/ { if (state) state = 2; }
        { last = $0; }
'

おすすめ記事