2016-10-25 4 views
1

ここで部分的に一致する「構造体」定義がある場合は、テキストを追加する必要があります。それぞれの構造体はメンバとして別の構造体を持つことができます。私は外部/メイン構造体の行に 'typedef'を追加することしかできませんでした。 ;の存在のために、このsedコマンドチェックは行の最後にbashで一致するパターンにテキストを追加

sed '/;[[:blank:]]*$/!s/^[[:blank:]]*struct/typedef &/' file 

typedef struct struct-A { 
    ... 
    struct struct-B; 
}; 

、それが存在しない場合にのみ、それはtypedefを追加します:あなたはこのsedを使用することができます

typedef struct struct-A { 
... 
struct struct-B; 
}; 
+0

'struct-B'のような' struct'メンバはインデントされていませんか? – eddiem

+0

フィールドのインデントはオプションです。 – marc

+0

'{'は常に外部構造定義の 'struct'と同じ行にありますか? – eddiem

答えて

0

struct struct-A { 
... 
struct struct-B; 
}; 

〜の前にstructキーワード。

+1

はい@anubhava、ありがとうございます! – marc

0

あなたはsedの下にチェックしてくださいすることができ - それはラインで;が見つからないときこれは、sedの

sed '/;/! s/struct\ struct-/typedef\ struct\ struct-/g' file

typedef struct struct-A { 
... 
struct struct-B; 
}; 
typedef struct struct-C { 
... 
struct struct-D; 
}; 

typedef structstructに置き換えられます。

関連する問題