ログ ファイル内のいくつかの特別な行を削除しようとしているので、組み込みの Linux システムで sed of busybox を使用しています。
# sed
BusyBox v1.18.4 (2013-01-16 16:00:18 CST) multi-call binary.
Usage: sed [-efinr] SED_CMD [FILE]...
Options:
-e CMD Add CMD to sed commands to be executed
-f FILE Add FILE contents to sed commands to be executed
-i Edit files in-place (else sends result to stdout)
-n Suppress automatic printing of pattern space
-r Use extended regex syntax
If no -e or -f, the first non-option argument is the sed command string.
Remaining arguments are input files (stdin if none).
シェルで次のコマンドを実行すると、すべて正常に動作します。
export MODULE=sshd sed "/$MODULE\[/d" logfile
しかし、これを達成するために次の C コードを使用しようとすると:
char logfile[] = "logfile"; char module_str[] = "sshd"; char env_str[64] = {0}; int offset = 0; strcpy(env_str, "MODULE="); offset += strlen("MODULE="); strcpy(env_str + offset, module_str); putenv(env_str); system("sed \"/$MODULE\[/d\" logfile");
a.out を実行すると、次のエラー メッセージが表示されました。
sed: unmatched '/'
「system()」呼び出しの何が問題になっていますか? 私はテキスト処理の初心者なので、誰かが私に手がかりを与えることができますか? ありがとう。
よろしく、 dejunl