- 1 名前:名無しさん@お腹いっぱい。 [04/05/28 16:56]
- sedスレッド
- 321 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/16(月) 16:23:57 ]
- sedの公式ホームページってないのでしょうか
awkは一応gawkがあって一応開発も続いているようですが sedはどのような状態なのでしょうか? いつまでたっても最短マッチを搭載しない理由もお教えねがいます。
- 322 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/16(月) 23:57:10 ]
- そういう機能を追加すると、既存のスクリプトが動作しなくなるから。
ポータビリティを失ってまで実装する必要がない。(それこそ、perlでもawkでも使えばいい)
- 323 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/17(火) 09:03:12 ]
- なるほど、参考になりました。
もし開発に参加できるなら参加したいと思っていたのですが そのような理由ならそういったときはperlやawkに頼る事にします。
- 324 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/18(水) 09:33:00 ]
- >>322
sedに正規表現perl互換モードを搭載すればいいだけなのにね
- 325 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/19(木) 18:21:24 ]
- GNU sedの-r みたいなので、perlモードがあればいいね。
- 326 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/19(木) 19:39:12 ]
- >>321
gnu sed 拡張している人たちがいるからそのあたりに乗ってみれば?
- 327 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/19(木) 20:18:08 ]
- onigsedじゃダメなのか?
つーか、perl -pe でいいじゃん。
- 328 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/24(火) 17:21:46 ]
- >>321
GNU sed なら www.gnu.org/software/sed/
- 329 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/02/27(金) 16:21:29 ]
- >>327
今度はsed互換ではないという
- 330 名前:名無しさん@お腹いっぱい。 [2009/06/29(月) 20:49:52 ]
- 質問させてください。
sedでホワイトスペースを解除または増やす方法ってあるのでしょうか?
- 331 名前:名無しさん@お腹いっぱい。 [2009/06/29(月) 20:52:21 ]
- 間違い。ホールドスペースです。
- 332 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/29(月) 21:16:24 ]
- 以下ホワイトベース禁止
- 333 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/29(月) 22:40:10 ]
- 白兵戦になるぞ!
- 334 名前:名無しさん@お腹いっぱい。 [2009/07/03(金) 03:11:56 ]
- sedで、
/pattern/r file ってするとマッチした行の次にfileの内容が出力されますが、 その行の前に出力する方法はないでしょうか? ちなみにマッチする行は1個しかありません。
- 335 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/03(金) 23:31:09 ]
- sed -n -e '/pattern/r file' -e p
- 336 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/03(金) 23:49:16 ]
- ごめん、ダメだった。こっちで。
sed -n -e 'x;p;g' -e '/pattern/r file' 1行目の空行は無視して
- 337 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/03(金) 23:53:59 ]
- 1行めの空白はもう1段 | sed 1d で消せるけど……
入力の最後の1行出てなくない?
- 338 名前:336 mailto:sage [2009/07/04(土) 00:17:53 ]
- 出てなかった。
sed -n -e 'x;p;g' -e '/pattern/r file' -e '$p' という感じで最後の行を出力することは出来るけど patternが最後の行の場合だけ、fileの内容が次行に出ちゃう。 自分はギブアップ
- 339 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/04(土) 12:34:06 ]
- いろいろありがとうございます。
sed 1個では難しいようですね。 patternより前とpattern以後に別けて、 間にfileをcatするしかないのかもしれません。
- 340 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/04(土) 18:04:47 ]
- sed 2個ならなんとか
sed -e '$aEND' | sed -e ' $d /pattern/{ r file N } ${ P d }'
- 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 ]
- なるほど
|

|