• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Ubuntuの端末におけるシステムコールの数え方)

Ubuntuの端末でシステムコールの数え方と種類の数え方を学ぼう!

このQ&Aのポイント
  • Ubuntuの端末でcとJavaのコードを実行し、straceコマンドでシステムコールを読み取る方法について調べています。
  • tracefileに出力されたシステムコールの行数を数え、さらにシステムコールの種類の数を数える方法を知りたいです。
  • 便利なコマンドや使い方があれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • astronaut
  • ベストアンサー率58% (303/516)
回答No.2

正規表現の問題ですね 最初の ( 以降を取り除くってことでよければ sed 's/\([^(]*\)(.*/\1/' かな。 後方参照を使って、行全体を最初の ( の直前までで置き換えてます。 #もっとシンプルな表現もありそうですが・・・ (参考)http://www.kt.rim.or.jp/~kbk/regex/regex.html

KaYoukAyOu
質問者

お礼

おぉ、できました!(以降が全部消えました。 そしたら最初の4ケタの数字も微妙に違っていることに気付いて \{n\}を使ったら最初の4ケタの数字も消せシステムコールだけでまとめることができました。 あとはuniqとsortとwc使ったらできた、と思います。 とても助かりました。 ありがとうございました。

その他の回答 (1)

  • astronaut
  • ベストアンサー率58% (303/516)
回答No.1

課題ですよね sedとかawkとかgrepとかperlとかsortとかuniqとかwcとか、色々組み合わせて「いい方法」を見つけるのが醍醐味なので、楽しんで取り組んでください。 > もし何か検討違いなことを言っていたら教えてください。 s/検討違い/見当違い/

KaYoukAyOu
質問者

補足

漢字間違い、お恥ずかしい。 先生もsedとuniqが使えるといっていたのでその二つでがんばっているのですが、 3232 execve("./Noop", ["./Noop"], [/* 39 vars */]) = 0 の( 以降を何かに置換してuniqでまとめようとしています。 sed 's/([^(]*$/ XXX/'とし( 以降をXXXで置換しようとしたのですがこれだと( が二回出てくると最後の( 以降しか置換してくれません。 最初の( から末尾までを置換する方法はありますか? or もっとスマートな方法がありますか? よろしくお願いします。

関連するQ&A