08/04/15 23:49:36
以後放置で。
276:名無しさん@お腹いっぱい。
08/04/16 03:11:06
あらら、自分の非を指摘されて、それが正しいもんだから逆切れしちゃった訳ね。
まともに反論できないからって、お前の母ちゃんでべそーは無いよな(笑)
277:名無しさん@お腹いっぱい。
08/04/16 04:20:47
自分で作ったソフトでも無いのにw
使い方知ってるくらいでそこまで威張るか普通?
そんなことぐらいで天狗になる奴リアルではいないよw
ゲームの上手い子供が威張り倒してるのとどう違うんだ???
パソコンソフトの使い方ぐらいでこんなに意地になる連中マジで知らんわw
教えたくなければ知らん顔してればいいのに何が何でも答えるんだね(解答以外はwwwww)
多分、実社会でもずれてんだろなー
キミはた迷惑だと思われてるかもしれないよw
廻りよく見てみw
278:名無しさん@お腹いっぱい。
08/04/16 04:32:41
何このスレ?
279:名無しさん@お腹いっぱい。
08/04/16 04:58:56
「教えて君」の見本のような奴だな。
280:名無しさん@お腹いっぱい。
08/04/16 05:24:34
おもちゃを上手く使いこなせたから自慢してるって程度じゃないな
頭小学生並みの幼児性w
上から目線が笑えるw
こいつ 奴 プ
笑えるwww
言葉遊びできない奴は何やってもダメって典型
281:名無しさん@お腹いっぱい。
08/04/16 05:39:44
これほどの逸材を埋もれさせておくのはもったいないから age とく
282:名無しさん@お腹いっぱい。
08/04/16 05:48:41
# >>275がいいと思うんですが。
>>281
そういうことでしたら>>262に追加で、逸材ぶりがよく伝わるスレも。
スレリンク(php板:42-番)
283:名無しさん@お腹いっぱい。
08/04/16 17:32:10
これは壮大な釣りなのか?
一瞬、なりすましを疑ったが、>>262,282を見ると、まさに本人だよな。
284:名無しさん@お腹いっぱい。
08/05/15 23:42:43
sedって文全体からある語句を置換するのは簡単だけど、
最初にマッチする語句だけ置換して後はそのまま出力しようとするとちょっと複雑になってしまうよね。
スクリプトの先頭に戻らない様なループを作らないといけない。
285:名無しさん@お腹いっぱい。
08/05/16 00:20:54
>>284
遠まわしに「最初にマッチする語句だけ置換をする簡易な方法はありませんか?」
って聞いてるのか?それとも独り言ならチラ裏へ。
286:名無しさん@お腹いっぱい。
08/05/16 11:39:13
% ( echo hogehoge; echo hogehoge ) | sed '0,/hoge/s/hoge/fuga/'
fugahoge
hogehoge
GNU sed に限るようだが。
287:284
08/05/16 21:22:18
>>286
レスサンクスです。ただ最初の0を1でやった場合はうまくいきませんでした。
s/hoge/fuga/
:loop
p
N
s/.*\n//
b loop
漏れの頭ではこんなのしか思い付きませんでした。
もっとスマートな方法があったら教えてください。
288:名無しさん@お腹いっぱい。
08/05/16 21:36:55
>>287
/hoge/{
s/hoge/fuga/
:loop
n
b loop
}
289:名無しさん@お腹いっぱい。
08/06/04 19:06:03
/me ?
290:名無しさん@お腹いっぱい。
08/07/07 08:34:28
n文字目のxのみyに置換というのはどうすればいいですか
291:名無しさん@お腹いっぱい。
08/07/07 08:36:46
n文字目のxとは、
行頭から(n-1)個の文字のあとに出現するx のことか?
行頭からn回目に出現するx のことか?
292:名無しさん@お腹いっぱい。
08/07/07 09:42:38
>>291
参考までに両方ともお願い
293:名無しさん@お腹いっぱい。
08/07/07 12:09:14
前者です
294:名無しさん@お腹いっぱい。
08/07/07 13:30:25
>>291
後者ですが、念のため両者の場合について教えてください
295:名無しさん@お腹いっぱい。
08/07/07 21:50:58
行頭から4文字目のxをyに
echo xxxxxxxxxx | sed 's/^¥(...¥)x/¥1y/'
行頭から4個目のxをyに
echo x-x-x-x-x | sed 's/¥([^x]*x[^x]*x[^x]*x[^x]*¥)x/¥1y/'
とかとか?
4を変数にするのは漏れには粍
296:名無しさん@お腹いっぱい。
08/07/07 23:32:28
()ってのは条件になるん?
297:290 293
08/07/08 10:30:38
ありがとうございます
確かに.×4みたいに表現できたらかっこいいですが
これで文句なしです!
298:名無しさん@お腹いっぱい。
08/07/08 11:11:36
>>297
×4は無理っぽい。
echo x-x-x-x-x- | sed 's/\(\([^x]*x\)\{3\}[^x]*\)x/\1y/'
299:名無しさん@お腹いっぱい。
08/07/08 11:49:57
>>298
Solarisのsedじゃ動かんな。
300:名無しさん@お腹いっぱい。
08/08/29 17:04:29
01101,"0600031","ホッカイドウ","サッポロシチュウオウク","キタ1ジョウヒガシ","北海道","札幌市中央区","北一条東",0
↓
01101,"0600031","ホッカイドウ","サッポロシチュウオウク","キタ1ジョウヒガシ","北海道","札幌市中央区","北一条東",0
この第5フィールドの半角英数だけ(2個有る場合もあり)全角にしたいのですが
どのようにsedを作ればいいでしょうか?
301:名無しさん@お腹いっぱい。
08/08/29 17:07:35
>どのようにsedを作れば
釣りポイントはここですか?
302:名無しさん@お腹いっぱい。
08/08/29 21:15:26
その形式は、郵便屋の郵便番号データだろ。
エクセルか何かの一覧表をcsvに落としただけの代物だから
そのままでは役に立たないよ。
そのままDBに格納し、専用プログラムで変換かけて正規化してる。
303:名無しさん@お腹いっぱい。
08/10/08 23:13:50
aaa.hoge
bbb.hage
ccc.foge
とかいう文字列があって、*.hoge以外にマッチする正規表現って出来るのでしょうか?
304:名無しさん@お腹いっぱい。
08/10/09 00:18:38
スレ違い。正規表現スレに池
305:名無しさん@お腹いっぱい。
08/10/09 21:57:14
>>303
その文を素直に読むと、当該文字列にだけはマッチしない
正規表現と読めるが、書き込み子の心情を忖度すると、
sed 's/[a-c]{3}\.hoge/==matched==/' って事かな?
まあ、[a-c]* でも、(aaa|bbb|ccc) でも、[[:alpha:]]* でも、
マッチする表現は無数に有るけど、(・・に、だけマッチする)
を、求めているなら、そもそも*.hoge って見当外れだし、
要するに、何が知りたいのか良く分からん。
306:名無しさん@お腹いっぱい。
08/10/10 17:29:18
>>305
> >>303
なるほど、ありがとうございます。
307:名無しさん@お腹いっぱい。
08/10/27 23:08:07
ファイル内の、スペース+改行をスペースのみに置換したいのですが、
どのように記述すればよいのでしょうか。
データ数が数十万行あるため、ファイルを全部読み込んでから
置換する方法では、容量がオーバーしてしまいました。
308:名無しさん@お腹いっぱい。
08/10/27 23:26:18
>>307
Perl か何かで書いちゃった方が早いんじゃね?
309:名無しさん@お腹いっぱい。
08/10/27 23:29:29
>>308
環境上、Perlを使用することができないんです。
sedでは難しいでしょうか。
310:名無しさん@お腹いっぱい。
08/10/28 00:02:57
環境によって違うと思うけど普通の書き方じゃダメなのか?
s/ \n/ /g
311:名無しさん@お腹いっぱい。
08/10/28 00:07:58
>>310
自分の環境では、\nが認識されませんでした。
312:名無しさん@お腹いっぱい。
08/10/28 02:53:50
>>311
OSの具体的な名前とかは出さないのな。
s/\
/ /g
では?
313:312
08/10/28 02:56:53
すまん。勘違いした。
sed はPerlと違って、入力したときに改行を取り除いてからパターンスペースに送るから、
そこで改行探しても見つかりっこない。
んで、出力時に自動的に改行は付くし、これを抑制する手段はない。
せめて awk使っとけ。Perlなくてもawkはあるだろ。
314:312
08/10/28 02:58:41
すまん勘違いしてた。
sedはPerlと違って入力時に改行を取り除くから、置換時に改行探したって見つかりっこない。
Nとかで次の入力を読んでくれば間に挟まるけど。
315:名無しさん@お腹いっぱい。
08/10/28 03:19:55
おまえらマルチに親切だな
316:名無しさん@お腹いっぱい。
08/10/28 07:09:08
ありがとうございました。
sedでは難しそうですね。別の方法を探してみます。
317:名無しさん@お腹いっぱい。
08/10/28 07:21:00
微妙に変えてあるとこがうまいな。
318:名無しさん@お腹いっぱい。
08/10/28 22:44:37
tr -d '\n'
319:名無しさん@お腹いっぱい。
08/10/28 22:47:24
良く読んで赤面しろw
>>318
>>307
「スペース+改行をスペースのみに置換したい」
320:名無しさん@お腹いっぱい。
08/10/28 22:54:10
>>307
sed '
:again
/ $/{
N
s/?n//
b again
}
'
321:名無しさん@お腹いっぱい。
09/02/16 16:23:57
sedの公式ホームページってないのでしょうか
awkは一応gawkがあって一応開発も続いているようですが
sedはどのような状態なのでしょうか?
いつまでたっても最短マッチを搭載しない理由もお教えねがいます。
322:名無しさん@お腹いっぱい。
09/02/16 23:57:10
そういう機能を追加すると、既存のスクリプトが動作しなくなるから。
ポータビリティを失ってまで実装する必要がない。(それこそ、perlでもawkでも使えばいい)
323:名無しさん@お腹いっぱい。
09/02/17 09:03:12
なるほど、参考になりました。
もし開発に参加できるなら参加したいと思っていたのですが
そのような理由ならそういったときはperlやawkに頼る事にします。
324:名無しさん@お腹いっぱい。
09/02/18 09:33:00
>>322
sedに正規表現perl互換モードを搭載すればいいだけなのにね
325:名無しさん@お腹いっぱい。
09/02/19 18:21:24
GNU sedの-r みたいなので、perlモードがあればいいね。
326:名無しさん@お腹いっぱい。
09/02/19 19:39:12
>>321
gnu sed 拡張している人たちがいるからそのあたりに乗ってみれば?
327:名無しさん@お腹いっぱい。
09/02/19 20:18:08
onigsedじゃダメなのか?
つーか、perl -pe でいいじゃん。
328:名無しさん@お腹いっぱい。
09/02/24 17:21:46
>>321
GNU sed なら
URLリンク(www.gnu.org)
329:名無しさん@お腹いっぱい。
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
なるほど