[表示 : 全て 最新50 1-99 101- 201- 301- 2chのread.cgiへ]
Update time : 05/11 15:25 / Filesize : 82 KB / Number-of Response : 350
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

sed



1 名前:名無しさん@お腹いっぱい。 [04/05/28 16:56]
sedスレッド

341 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/24(木) 17:28:09 ]
>>295 の例に似てますが、
バイナリファイル(1行めの)4バイトめを ASCII 文字 0x02 -> 0x03 に
変更するにはどうすればいいでしょう?

# sed -e '1s/^\(...\)\x02/\1\x03/' in > out

ではだめでした。
試した環境は FreeBSD 7.2 です。

342 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/24(木) 18:02:08 ]
>>341
(dd bs=3 count=1; dd bs=1 count=1 of=/dev/null; printf '¥003'; cat) < in > out

343 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/25(金) 10:26:24 ]
>>341
sed -e "1s/^\(...\)^B/\1$(printf '\03')/"
でできんかね。^BはC-v C-b入力できるはず。

344 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/25(金) 10:46:05 ]
>>343
最初の3バイトに改行文字がない保証がないから一般的にはだめそうだな。
やっぱ行指向のsedでバイナリファイルを操作するのは無理があると思う。

345 名前:341 mailto:sage [2009/09/25(金) 12:31:36 ]
\x02 などは GNU sed の拡張仕様でした。

 # pkg_add -r gsed
 # rehash
 # gsed -e '1s/^\(...\)\x02/\1\x03/' in > out

でできました。

346 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/09/25(金) 12:37:49 ]
>>342-344 ありがとうございます。
>>342 の dd を使った方法は大変参考になります。

あと、
 # sed -e '1s/^\(...\)^V^B/\1^V^C/' in > out
でもできました。
^V^B は <Ctrl>V<Ctrl>B 、
^V^C は <Ctrl>V<Ctrl>C です。

347 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/20(土) 21:42:41 ]
ひとつ、お聞きいたします。

Nコマンドって、最後の行で次行が読めない場合、何もせず終了、
のはずですよね。すると、
sed 'sed ':l;N;bl' <file>
とすると何も出力されないんじゃないかと思うんですが、
私の使っているGNU sed 4.1.5版だと<file>の全部を出力してしまいます。
つまり、「何もせず終了」じゃなくて、「デフォルト出力して終了」
になっているように思われるわけですが、これは、どうなんでしょうか。

348 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/02/20(土) 23:16:51 ]
>>347
infoに書いてありました。

349 名前:名無しさん@お腹いっぱい。 [2010/07/01(木) 23:39:24 ]
なるほど








[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<82KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef