09/02/27 16:21:29
>>327
今度はsed互換ではないという
330:名無しさん@お腹いっぱい。
09/06/29 20:49:52
質問させてください。
sedでホワイトスペースを解除または増やす方法ってあるのでしょうか?
331:名無しさん@お腹いっぱい。
09/06/29 20:52:21
間違い。ホールドスペースです。
332:名無しさん@お腹いっぱい。
09/06/29 21:16:24
以下ホワイトベース禁止
333:名無しさん@お腹いっぱい。
09/06/29 22:40:10
白兵戦になるぞ!
334:名無しさん@お腹いっぱい。
09/07/03 03:11:56
sedで、
/pattern/r file
ってするとマッチした行の次にfileの内容が出力されますが、
その行の前に出力する方法はないでしょうか?
ちなみにマッチする行は1個しかありません。
335:名無しさん@お腹いっぱい。
09/07/03 23:31:09
sed -n -e '/pattern/r file' -e p
336:名無しさん@お腹いっぱい。
09/07/03 23:49:16
ごめん、ダメだった。こっちで。
sed -n -e 'x;p;g' -e '/pattern/r file'
1行目の空行は無視して
337:名無しさん@お腹いっぱい。
09/07/03 23:53:59
1行めの空白はもう1段 | sed 1d で消せるけど……
入力の最後の1行出てなくない?
338:336
09/07/04 00:17:53
出てなかった。
sed -n -e 'x;p;g' -e '/pattern/r file' -e '$p'
という感じで最後の行を出力することは出来るけど
patternが最後の行の場合だけ、fileの内容が次行に出ちゃう。
自分はギブアップ
339:名無しさん@お腹いっぱい。
09/07/04 12:34:06
いろいろありがとうございます。
sed 1個では難しいようですね。
patternより前とpattern以後に別けて、
間にfileをcatするしかないのかもしれません。
340:名無しさん@お腹いっぱい。
09/07/04 18:04:47
sed 2個ならなんとか
sed -e '$aEND' | sed -e '
$d
/pattern/{
r file
N
}
${
P
d
}'
341:名無しさん@お腹いっぱい。
09/09/24 17:28:09
>>295 の例に似てますが、
バイナリファイル(1行めの)4バイトめを ASCII 文字 0x02 -> 0x03 に
変更するにはどうすればいいでしょう?
# sed -e '1s/^\(...\)\x02/\1\x03/' in > out
ではだめでした。
試した環境は FreeBSD 7.2 です。
342:名無しさん@お腹いっぱい。
09/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:名無しさん@お腹いっぱい。
09/09/25 10:26:24
>>341
sed -e "1s/^\(...\)^B/\1$(printf '\03')/"
でできんかね。^BはC-v C-b入力できるはず。
344:名無しさん@お腹いっぱい。
09/09/25 10:46:05
>>343
最初の3バイトに改行文字がない保証がないから一般的にはだめそうだな。
やっぱ行指向のsedでバイナリファイルを操作するのは無理があると思う。
345:341
09/09/25 12:31:36
\x02 などは GNU sed の拡張仕様でした。
# pkg_add -r gsed
# rehash
# gsed -e '1s/^\(...\)\x02/\1\x03/' in > out
でできました。
346:名無しさん@お腹いっぱい。
09/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:名無しさん@お腹いっぱい。
10/02/20 21:42:41
ひとつ、お聞きいたします。
Nコマンドって、最後の行で次行が読めない場合、何もせず終了、
のはずですよね。すると、
sed 'sed ':l;N;bl' <file>
とすると何も出力されないんじゃないかと思うんですが、
私の使っているGNU sed 4.1.5版だと<file>の全部を出力してしまいます。
つまり、「何もせず終了」じゃなくて、「デフォルト出力して終了」
になっているように思われるわけですが、これは、どうなんでしょうか。
348:名無しさん@お腹いっぱい。
10/02/20 23:16:51
>>347
infoに書いてありました。
349:名無しさん@お腹いっぱい。
10/07/01 23:39:24
なるほど