私はCのソースファイルのダースで使用されるマクロ__P()、などを削除するCソースファイルから__P()マクロを削除するには正規表現は
char *x(char *, size_t,
void *, size_t, int);
char *y(void *, const char *, int);
私の問題は、関数の宣言に改行が含まれている可能性があり、不要な中括弧を削除したいということです。
誰かが私の問題の解決策を持っていますか?
私はCのソースファイルのダースで使用されるマクロ__P()、などを削除するCソースファイルから__P()マクロを削除するには正規表現は
char *x(char *, size_t,
void *, size_t, int);
char *y(void *, const char *, int);
私の問題は、関数の宣言に改行が含まれている可能性があり、不要な中括弧を削除したいということです。
誰かが私の問題の解決策を持っていますか?
正規表現:使用する(.*?)__P\((.*?)\);
フラグ:グローバル検索のための
g
。
ドットマッチング改行を許可する。
行うに交換:\1\2;
sedコマンド:sed 's/(.*?)__P\((.*?)\);/\1\2;/gs' file.c
sedのパターンFLとしてs
を理解していないようですしかし、perlは:
perl -0777 -p -i -e 's/(.*?) __P\((.*?)\);/\1\2;/gs' file.c
しかし、多くの正直な正規表現のためのnoobに感謝!
正規表現のおかげで多くの!私は 's'について知らなかった。不幸にも、コマンドラインでは機能しません。 'sed:-e式#1、char 29:' s''に未知のオプション –
@JörgKrause:うまくいきました。 –