2009-03-14 24 views
2

Linuxマシンでawkコマンドを実行する必要があるcコードの一部があります。しかし、私の人生では、それはエグゼクティブではありません。 awkは私がターミナルで直接実行すると動作します。Cシステム()呼び出しがエラー "unterminated string"で失敗する

私の現在は

でコマンド

system("awk '{ printf \"%d \n\", $12 }' results.dat | sort -n"); 

それが失敗したが失敗した

awk: { printf "%d 
awk:  ^unterminated string 

コマンドが実行されるように他にどのようにあなたが二重引用符をエスケープしますか?また、なぜこれが失敗するのですか?システムコールをprintfに置き換えると、それは印刷されますか?

system("awk '{ printf \"%d \\n\", $12 }' results.dat | sort -n"); 
//      ^note the extra \ 

に私は\nprintfの一部であることを意味すると考えるようとして

答えて

8

おそらくあなたは、再び\nをエスケープする必要があります。

あなたの現在の建設はちょうど...今のおかげを自分自身を撃つつもり

awk '{ printf "%d 
", $12 }' results.dat | sort -n 
+0

の引数でsystemを呼び出します。 – corymathews

+0

@corymatthews:np;時にはそれはちょうど第二の目のペアを取る:] –

関連する問題