- 1 名前:名無しさん@お腹いっぱい。 [04/05/28 16:56]
- sedスレッド
- 286 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/16(金) 11:39:13 ]
- % ( echo hogehoge; echo hogehoge ) | sed '0,/hoge/s/hoge/fuga/'
fugahoge hogehoge GNU sed に限るようだが。
- 287 名前:284 mailto:sage [2008/05/16(金) 21:22:18 ]
- >>286
レスサンクスです。ただ最初の0を1でやった場合はうまくいきませんでした。 s/hoge/fuga/ :loop p N s/.*\n// b loop 漏れの頭ではこんなのしか思い付きませんでした。 もっとスマートな方法があったら教えてください。
- 288 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/16(金) 21:36:55 ]
- >>287
/hoge/{ s/hoge/fuga/ :loop n b loop }
- 289 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/04(水) 19:06:03 ]
- /me ?
- 290 名前:名無しさん@お腹いっぱい。 [2008/07/07(月) 08:34:28 ]
- n文字目のxのみyに置換というのはどうすればいいですか
- 291 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/07(月) 08:36:46 ]
- n文字目のxとは、
行頭から(n-1)個の文字のあとに出現するx のことか? 行頭からn回目に出現するx のことか?
- 292 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/07(月) 09:42:38 ]
- >>291
参考までに両方ともお願い
- 293 名前:名無しさん@お腹いっぱい。 [2008/07/07(月) 12:09:14 ]
- 前者です
- 294 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/07(月) 13:30:25 ]
- >>291
後者ですが、念のため両者の場合について教えてください
- 295 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/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 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/07(月) 23:32:28 ]
- ()ってのは条件になるん?
- 297 名前:290 293 [2008/07/08(火) 10:30:38 ]
- ありがとうございます
確かに.×4みたいに表現できたらかっこいいですが これで文句なしです!
- 298 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/08(火) 11:11:36 ]
- >>297
×4は無理っぽい。 echo x-x-x-x-x- | sed 's/\(\([^x]*x\)\{3\}[^x]*\)x/\1y/'
- 299 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/08(火) 11:49:57 ]
- >>298
Solarisのsedじゃ動かんな。
- 300 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/08/29(金) 17:04:29 ]
- 01101,"0600031","ホッカイドウ","サッポロシチュウオウク","キタ1ジョウヒガシ","北海道","札幌市中央区","北一条東",0
↓ 01101,"0600031","ホッカイドウ","サッポロシチュウオウク","キタ1ジョウヒガシ","北海道","札幌市中央区","北一条東",0 この第5フィールドの半角英数だけ(2個有る場合もあり)全角にしたいのですが どのようにsedを作ればいいでしょうか?
- 301 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/08/29(金) 17:07:35 ]
- >どのようにsedを作れば
釣りポイントはここですか?
- 302 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/08/29(金) 21:15:26 ]
- その形式は、郵便屋の郵便番号データだろ。
エクセルか何かの一覧表をcsvに落としただけの代物だから そのままでは役に立たないよ。 そのままDBに格納し、専用プログラムで変換かけて正規化してる。
- 303 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/08(水) 23:13:50 ]
- aaa.hoge
bbb.hage ccc.foge とかいう文字列があって、*.hoge以外にマッチする正規表現って出来るのでしょうか?
- 304 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/09(木) 00:18:38 ]
- スレ違い。正規表現スレに池
- 305 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/09(木) 21:57:14 ]
- >>303
その文を素直に読むと、当該文字列にだけはマッチしない 正規表現と読めるが、書き込み子の心情を忖度すると、 sed 's/[a-c]{3}\.hoge/==matched==/' って事かな? まあ、[a-c]* でも、(aaa|bbb|ccc) でも、[[:alpha:]]* でも、 マッチする表現は無数に有るけど、(・・に、だけマッチする) を、求めているなら、そもそも*.hoge って見当外れだし、 要するに、何が知りたいのか良く分からん。
- 306 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/10(金) 17:29:18 ]
- >>305
> >>303 なるほど、ありがとうございます。
- 307 名前:名無しさん@お腹いっぱい。 [2008/10/27(月) 23:08:07 ]
- ファイル内の、スペース+改行をスペースのみに置換したいのですが、
どのように記述すればよいのでしょうか。 データ数が数十万行あるため、ファイルを全部読み込んでから 置換する方法では、容量がオーバーしてしまいました。
- 308 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/27(月) 23:26:18 ]
- >>307
Perl か何かで書いちゃった方が早いんじゃね?
- 309 名前:名無しさん@お腹いっぱい。 [2008/10/27(月) 23:29:29 ]
- >>308
環境上、Perlを使用することができないんです。 sedでは難しいでしょうか。
- 310 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/28(火) 00:02:57 ]
- 環境によって違うと思うけど普通の書き方じゃダメなのか?
s/ \n/ /g
- 311 名前:名無しさん@お腹いっぱい。 [2008/10/28(火) 00:07:58 ]
- >>310
自分の環境では、\nが認識されませんでした。
- 312 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/28(火) 02:53:50 ]
- >>311
OSの具体的な名前とかは出さないのな。 s/\ / /g では?
- 313 名前:312 mailto:sage [2008/10/28(火) 02:56:53 ]
- すまん。勘違いした。
sed はPerlと違って、入力したときに改行を取り除いてからパターンスペースに送るから、 そこで改行探しても見つかりっこない。 んで、出力時に自動的に改行は付くし、これを抑制する手段はない。 せめて awk使っとけ。Perlなくてもawkはあるだろ。
- 314 名前:312 mailto:sage [2008/10/28(火) 02:58:41 ]
- すまん勘違いしてた。
sedはPerlと違って入力時に改行を取り除くから、置換時に改行探したって見つかりっこない。 Nとかで次の入力を読んでくれば間に挟まるけど。
- 315 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/28(火) 03:19:55 ]
- おまえらマルチに親切だな
- 316 名前:名無しさん@お腹いっぱい。 [2008/10/28(火) 07:09:08 ]
- ありがとうございました。
sedでは難しそうですね。別の方法を探してみます。
- 317 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/28(火) 07:21:00 ]
- 微妙に変えてあるとこがうまいな。
- 318 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/28(火) 22:44:37 ]
- tr -d '\n'
- 319 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/28(火) 22:47:24 ]
- 良く読んで赤面しろw
>>318 >>307 「スペース+改行をスペースのみに置換したい」
- 320 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/28(火) 22:54:10 ]
- >>307
sed ' :again / $/{ N s/?n// b again } '
- 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互換ではないという
|

|