ここから本文です

UNIXコマンドでバイナリデータの編集は可能か?

このエントリーをはてなブックマークに追加

質問者

hafezalaqsaさん

2011/8/2422:16:47

UNIXコマンドでバイナリデータの編集は可能か?

UNIXコマンドでバイナリデータの編集は可能でしょうか?
例えば、以下の様な10バイト固定長のデータの2バイト目から4バイトを切り出して改行をつけて、HEX表示させることは可能でしょうか?

[編集前]
x31x00x00x00x01x36x37x38x09x0a
x31x00x00x00x02x36x37x38x09x0a
x31x00x00x00x03x36x37x38x09x0a

※上記は便宜上16進表記し、境界が分かりやすい様に10バイトで改行表示している。

[編集後]
00000001[改行]
00000002[改行]
00000003[改行]

お手数ですが、どなたかご教示願います。

補足補足:
HEX表示ではなく、HEX形式文字列表示の誤りでした。

閲覧数:
2,615
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

ycos001さん

2011/8/2511:28:01

編集という事ですが、バイナリデータのフォーマット出力ですね。
テキストデータで区切り記号がれあば cut を使うところですが、バイナリなので、私の知る限りコマンド一発での出力は難しいです。
(単に位置を指定して取り出すのであれば -b オプションが使えます)
perl で簡単なプログラムを作る事でよいいなら、対策はあります。
前提を置くためにデータ作成プログラムも用意しました。ご参考まで。

--- 表示用 int.pl
#! /usr/bin/perl
open(IFILE, "< data.dat") || die "Can't open data.dat";
binmode IFILE;

while( !eof(IFILE) ){
read(IFILE, $data, 10);
($d1, $d2, $d) = unpack("CIC5",$data);
printf("%08x\n", $d2);
}
close(IFILE);

--- データ作成用 bin.pl
#! /usr/bin/perl
open(WFILE, "> data.dat") || die "Can't open data.dat";
binmode WFILE;

for($i=268435450;$i<268435460 ;$i++){
$data = pack("CIC5", 0x31, $i, 0x36, 0x37, 0x38, 0x09, 0x0a);
print WFILE $data;
}
close(WFILE);

質問した人からのコメント

2011/8/26 00:57:31

驚く ycos001さん
コマンド一発だと難しいですけど、perl使ってワンライナーで出来ました。気づかなかった!!
fold -b -w10 ./binary | perl -ne 'printf("%s\n",unpack("H*",substr($_,1,4)));'

dolphin960413さん
有難うございました。viのバイナリ編集の仕方ですね。その節はどうも有難うございました。

BAは、perl使用の着想を気づかせてくれたycos001さんにしたいと思います。
皆さん有難うございました。

ちょい足しを取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル
  • このエントリーをはてなブックマークに追加

このQ&Aで解決しましたか?質問する

閉じる

ベストアンサー以外の回答
1〜1件/1件中

2011/8/2508:07:03

エディタ vi(vim) でバイナリデータの編集も可能です。

以下の Q&A を参照してください。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1469594839

[参考記事]
Linux Tips: vi(vim) 入門
http://www.dolphin-bbs.net/linuxtips/vimintro.html

ちょい足しを取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

ID/ニックネームを選択し、「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。

ほかのID/ニックネームで利用登録する