こんばんは。
課題でcとJavaのコードを実行してstraceコマンドでその実行時のシステムコールを読み取るという課題をやっています。
Ubuntuの端末でcとJavaのコードをコンパイルし、straceコマンドを実行するとtracefileというのがでてきてそこにずらずらシステムコール(おそらく)が書いてあります。
↓ こんな感じ。
3232 execve("./Noop", ["./Noop"], [/* 39 vars */]) = 0
3232 brk(0) = 0x98c6000
まずこれがシステムコールであっていますか?execveとかがそうですか?
これが6000行くらいあります。
質問はこの中からresumedと書かれたラインを抜かした行数を数え(システムコールの数を数える)、さらにシステムコールの種類の数を数えたいのですがいい方法はありますでしょうか?
便利なコマンドとかあったら使い方とともに教えていただきたいです。
もし何か検討違いなことを言っていたら教えてください。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
正規表現の問題ですね
最初の ( 以降を取り除くってことでよければ
sed 's/\([^(]*\)(.*/\1/'
かな。
後方参照を使って、行全体を最初の ( の直前までで置き換えてます。
#もっとシンプルな表現もありそうですが・・・
(参考)http://www.kt.rim.or.jp/~kbk/regex/regex.html
おぉ、できました!(以降が全部消えました。
そしたら最初の4ケタの数字も微妙に違っていることに気付いて
\{n\}を使ったら最初の4ケタの数字も消せシステムコールだけでまとめることができました。
あとはuniqとsortとwc使ったらできた、と思います。
とても助かりました。
ありがとうございました。
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
もっとスマートな方法がありますか?
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA★PDFをPDFアプリで印刷しようと思っていますが上手くゆきません 1 2022/06/06 22:04
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- その他(プログラミング・Web制作) 外付ディスプレイで AutoHotkey の MouseMove コマンドを実行するとマウスカーソル 1 2023/03/06 00:04
- Java Javaについて質問です。 勉強し始めたばかりの初心者です。 相続税について課税額を算出するコードを 1 2022/05/31 19:02
- Windows 10 ネットワークプリンターにファイルを直接送る方法・コマンドないですか?(´・ω・`) 3 2023/03/13 23:15
- 大学受験 受験について 早稲田志望の浪人生です。 文系学部志望なのですが数学受験を考えています。 現在の予定で 2 2022/06/11 19:48
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- C言語・C++・C# C言語 3 2022/10/04 15:07
- その他(教育・科学・学問) 【数学】数学に精通している方、博識な方にに質問です。 3 2022/08/12 15:55
- その他(プログラミング・Web制作) pythonにおける単方向リストの実装について 4 2022/07/13 12:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
scriptコマンドで出力したログ...
-
誰かにサーバにあるデータを消...
-
expectの使い方について
-
バッチで削除したフォルダをイ...
-
aptでインストールしたプログラ...
-
cygwinでno such file or direc...
-
safariのアンインストール方法...
-
MySQLへのDB::connectで、faile...
-
バッチファイルで多重起動を防ぐ
-
バッチスクリプト処理でエラー...
-
ソフトのインストール場所って...
-
【Mac/Xcode】カレントディレク...
-
フロッピーディスクの読み込み方法
-
windows 10 mobile
-
クリップボードの内容をEXCELに...
-
VBでExcelが起動されているか知...
-
Access VBA レポートの日付範囲...
-
OS インストール場所確認
-
VBAのRegExpで後方一致/不一致...
-
VBAで画像ファイルをダウンロー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
誰かにサーバにあるデータを消...
-
scriptコマンドで出力したログ...
-
OpenLDAPでのユーザ一覧表示
-
出力のリダイレクトコマンド「>...
-
シャットダウンしたユーザを知...
-
バッチで削除したフォルダをイ...
-
telnet後のログのとり方
-
ログに特定の文字が含まれてい...
-
centOS7サーバーに配置したHTML...
-
mac ターミナル
-
CONFIG.SYSの内容確認方法
-
cronでrmコマンドを実行すると...
-
Linux●前の行に戻れません...
-
ubuntuに外部侵入できるか
-
ウインドウズ10 休止状態
-
WORD2000 元に戻すコマンドに...
-
ある特定のフォルダの中に、2つ...
-
iCabの全画面表示を終了させる...
-
centos7 apacheが起動しない
-
lprコマンド(印刷)を実行する...
おすすめ情報