sedat UNIX
sed - 暇つぶし2ch329:名無しさん@お腹いっぱい。
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
なるほど


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch