- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Ubuntuの端末におけるシステムコールの数え方)
Ubuntuの端末でシステムコールの数え方と種類の数え方を学ぼう!
このQ&Aのポイント
- Ubuntuの端末でcとJavaのコードを実行し、straceコマンドでシステムコールを読み取る方法について調べています。
- tracefileに出力されたシステムコールの行数を数え、さらにシステムコールの種類の数を数える方法を知りたいです。
- 便利なコマンドや使い方があれば教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
正規表現の問題ですね 最初の ( 以降を取り除くってことでよければ sed 's/\([^(]*\)(.*/\1/' かな。 後方参照を使って、行全体を最初の ( の直前までで置き換えてます。 #もっとシンプルな表現もありそうですが・・・ (参考)http://www.kt.rim.or.jp/~kbk/regex/regex.html
その他の回答 (1)
- astronaut
- ベストアンサー率58% (303/516)
回答No.1
課題ですよね sedとかawkとかgrepとかperlとかsortとかuniqとかwcとか、色々組み合わせて「いい方法」を見つけるのが醍醐味なので、楽しんで取り組んでください。 > もし何か検討違いなことを言っていたら教えてください。 s/検討違い/見当違い/
質問者
補足
漢字間違い、お恥ずかしい。 先生もsedとuniqが使えるといっていたのでその二つでがんばっているのですが、 3232 execve("./Noop", ["./Noop"], [/* 39 vars */]) = 0 の( 以降を何かに置換してuniqでまとめようとしています。 sed 's/([^(]*$/ XXX/'とし( 以降をXXXで置換しようとしたのですがこれだと( が二回出てくると最後の( 以降しか置換してくれません。 最初の( から末尾までを置換する方法はありますか? or もっとスマートな方法がありますか? よろしくお願いします。
お礼
おぉ、できました!(以降が全部消えました。 そしたら最初の4ケタの数字も微妙に違っていることに気付いて \{n\}を使ったら最初の4ケタの数字も消せシステムコールだけでまとめることができました。 あとはuniqとsortとwc使ったらできた、と思います。 とても助かりました。 ありがとうございました。