以下のコマンドを使用して、ファイルからコメント付きの空の行を削除し、特定のパターンを検索しています。
sed '/#/d' $file | sed '/^[ ]*$/d' | tr -d '\n' | sed -n 's/^.*tags\s*[{]\s*hosttags\s*=\s*\([0-1]\)\s*[}].*/tags {hosttags = \1}/p'
上記の式はシェルでは機能しますが、C で使用する必要があります。問題はこの行にあります。
sprintf(buf, "sed '/#/d' %s | sed '/^[ ]*$/d' | tr -d '\n' | sed -n 's/^.*tags\s*[{]\s*hosttags\s*=\s*\([0-1]\)\s*[}].*/tags {hosttags = \1}/p'",file);
C は \s を解釈しようとし、コンパイルは失敗します。\s を [[:space]] に置き換えても機能しません。Cでこれを機能させる方法を教えてください。