【Grep】複数ファイル文字列検索ソフト【置換】
■ このスレッドは過去ログ倉庫に格納されています
04/06/17 09:57ID:PLaPZ/Pl
テキストファイルを扱う人には必須のGrepツールを語りましょう。
2007/07/03(火) 14:16:01ID:isiiHnu80
2007/07/03(火) 17:25:48ID:DEree+SK0
dir /b >hoge.txt
じゃだめなの?
条件に合うファイル名だけコピーしたいなら
grepかませればいいはずだし。
じゃだめなの?
条件に合うファイル名だけコピーしたいなら
grepかませればいいはずだし。
2007/07/04(水) 13:20:43ID:3B4vDgyA0
LiliTheSnifferというソフトを使っています。
複数キーワードの複数ファイル検索ですが、これで、対象となるキーワードに
正規表現を使えるようなソフトってありますか?
べつの言い方をすれば、Speeeeedの検索バージョンみたいなソフトです。
どなたか、知っていれば教えてください。
複数キーワードの複数ファイル検索ですが、これで、対象となるキーワードに
正規表現を使えるようなソフトってありますか?
べつの言い方をすれば、Speeeeedの検索バージョンみたいなソフトです。
どなたか、知っていれば教えてください。
2007/07/04(水) 13:23:28ID:icR9leDF0
getia
2007/07/04(水) 13:34:24ID:3B4vDgyA0
267Grep-Replace
2007/07/04(水) 21:32:48ID:VfmqVNj30 Grep-Replaceで、shift-jisの複数ファイルを、EUCにチェック入れて置換してしまい、文字化けてしまいました。元に戻すにはどうすればよいですか?
2007/08/26(日) 13:32:45ID:jw/aNQh20
ogrep保守
269素人
2007/10/19(金) 20:11:20ID:XyYxtmBE0 すいません、以下のようなソフトを探しております。
・あるフォルダに入っているファイル内の特定の文字列をフォルダ名に置き換えてくれる。
・複数のフォルダ・ファイルを一括処理できるもの。
基本的なことはこの2つがしたいのですが。
例えば、Aという名前のフォルダにaという名前のファイルが入っているとしまして、
そのファイルの中に1という文字列があるとしましたら、その1をAに置き換え、
同時にBフォルダの中にbファイルがあり、1という文字列があればBに置き換えるといったものです。
どなたか、ご存じであれば教えて下さい。
・あるフォルダに入っているファイル内の特定の文字列をフォルダ名に置き換えてくれる。
・複数のフォルダ・ファイルを一括処理できるもの。
基本的なことはこの2つがしたいのですが。
例えば、Aという名前のフォルダにaという名前のファイルが入っているとしまして、
そのファイルの中に1という文字列があるとしましたら、その1をAに置き換え、
同時にBフォルダの中にbファイルがあり、1という文字列があればBに置き換えるといったものです。
どなたか、ご存じであれば教えて下さい。
2007/10/22(月) 00:03:35ID:M4Ga2Y3m0
それはgrep単体の仕事じゃない。
271玄人
2007/11/03(土) 20:45:06ID:D8wVYBmI0 ならAutohotkeyの組み合わせで出来そう
2007/11/12(月) 16:27:27ID:bqBe8a6V0
vbsでpythonでもrubyでもいいからなんかスクリプト一つ抑えておこうぜ
2007/12/01(土) 17:40:29ID:0Hxrv83o0
複数ファイルから単一単語を検索するソフトは多そうなんですが逆に
単一ファイルの中から複数単語を一度に検索できるソフトでおすすめってどんなのがありますか?
Vectorをざっと漁ってみたところ「RelSearch 95 for Windows 95 ver. 1.12」というものがちょうど目的にぴったりあうものだったんですが
なんせかなり古いソフトのためXPで使うと文字が白く反転してて見えないという状態に
使う際には特に支障はないのですがほかにいいソフトがあれば教えていただけたらありがたいです
単一ファイルの中から複数単語を一度に検索できるソフトでおすすめってどんなのがありますか?
Vectorをざっと漁ってみたところ「RelSearch 95 for Windows 95 ver. 1.12」というものがちょうど目的にぴったりあうものだったんですが
なんせかなり古いソフトのためXPで使うと文字が白く反転してて見えないという状態に
使う際には特に支障はないのですがほかにいいソフトがあれば教えていただけたらありがたいです
2007/12/01(土) 18:19:17ID:Ekk8adlM0
正規表現が使えればいかようにでもなるんじゃね
getia
ttp://site-clue.statice.jp/soft_getia.php
ミニ検索隊
ttp://www6.ocn.ne.jp/~dagc/soft02.html
SGサーチ
ttp://www.vector.co.jp/soft/dl/win95/util/se375013.html
その単語ごとに結果を表示し分けるとなるとあれだけども
getia
ttp://site-clue.statice.jp/soft_getia.php
ミニ検索隊
ttp://www6.ocn.ne.jp/~dagc/soft02.html
SGサーチ
ttp://www.vector.co.jp/soft/dl/win95/util/se375013.html
その単語ごとに結果を表示し分けるとなるとあれだけども
2007/12/01(土) 23:03:48ID:0Hxrv83o0
>>274
う〜ん、正規表現とは違うんですよね
まったく別の単語たとえば「2ちゃんねる Microsoft ギコナビ」と3つの単語を用意し、「テスト.txt」を検索させて
その中からMicrosoftとギコナビって単語だけあったよーって吐き出してくれるソフトが理想なんですよ
何度も検索するので検索単語を保存したファイルを用意してそれと比較して見つかった単語を知らせてくれるみたいなのがあればいいのですが…
う〜ん、正規表現とは違うんですよね
まったく別の単語たとえば「2ちゃんねる Microsoft ギコナビ」と3つの単語を用意し、「テスト.txt」を検索させて
その中からMicrosoftとギコナビって単語だけあったよーって吐き出してくれるソフトが理想なんですよ
何度も検索するので検索単語を保存したファイルを用意してそれと比較して見つかった単語を知らせてくれるみたいなのがあればいいのですが…
2007/12/02(日) 02:33:31ID:sHQIZF330
SearchText
ttp://www.vector.co.jp/soft/win95/util/se302174.html
ちょっと違うかな
ttp://www.vector.co.jp/soft/win95/util/se302174.html
ちょっと違うかな
2007/12/02(日) 04:05:52ID:LP6Hjx9j0
2007/12/02(日) 23:20:48ID:NyXveXjFO
>>275
> まったく別の単語たとえば「2ちゃんねる Microsoft ギコナビ」と3つの単語を用意し、「テスト.txt」を検索させて
> その中からMicrosoftとギコナビって単語だけあったよーって吐き出してくれるソフト
それ、正規表現検索で可能だよ。
> まったく別の単語たとえば「2ちゃんねる Microsoft ギコナビ」と3つの単語を用意し、「テスト.txt」を検索させて
> その中からMicrosoftとギコナビって単語だけあったよーって吐き出してくれるソフト
それ、正規表現検索で可能だよ。
2007/12/05(水) 18:34:25ID:XfhH5EmB0
検索ワードを
(2ちゃんねる|Microsoft|ギコナビ)
と入力して、正規表現検索を指定すれば簡単にヒットするよ。
Devasとgetiaで検証ずみ。
(2ちゃんねる|Microsoft|ギコナビ)
と入力して、正規表現検索を指定すれば簡単にヒットするよ。
Devasとgetiaで検証ずみ。
2007/12/08(土) 12:46:18ID:EgVIKwXe0
2007/12/08(土) 15:07:45ID:+Xt6tpfb0
ホントだ。くくらなくても検索できる。
2007/12/09(日) 00:05:09ID:XCKqB87P0
正規表現ってすげぇな
2007/12/09(日) 04:49:03ID:8mahyPZU0
正規表現が苦手なのはand検索だな
284名無しさん@お腹いっぱい。
2007/12/18(火) 17:13:02ID:mpZJ5ujb0 エクスプローラの右クリックメニューからファイル名を一括置換「frep」
http://www.forest.impress.co.jp/article/2007/12/18/frep.html
http://www.forest.impress.co.jp/article/2007/12/18/frep.html
285名無しさん@お腹いっぱい。
2007/12/19(水) 01:52:29ID:Q9o9bZUw0 >>284
これは、いいですね。
Ctrl+Zも使えるのがすげえや。
さっそくいれた。
スレ違いだが、リネームには、こっちも便利です。
エディタの正規表現がそのまま使えるし、
そのまま見て、置換結果が確認できる。
E-Rename - k本的に無料ソフト・フリーソフト
http://www.gigafree.net/utility/rename/erename.html
窓の杜 - 【Review NEWS】指定したフォルダ内のファイル名をエディターなどで一括変更「E-Rename」
http://www.forest.impress.co.jp/article/2003/04/02/erename.html
これは、いいですね。
Ctrl+Zも使えるのがすげえや。
さっそくいれた。
スレ違いだが、リネームには、こっちも便利です。
エディタの正規表現がそのまま使えるし、
そのまま見て、置換結果が確認できる。
E-Rename - k本的に無料ソフト・フリーソフト
http://www.gigafree.net/utility/rename/erename.html
窓の杜 - 【Review NEWS】指定したフォルダ内のファイル名をエディターなどで一括変更「E-Rename」
http://www.forest.impress.co.jp/article/2003/04/02/erename.html
286名無しさん@お腹いっぱい。
2008/03/06(木) 01:15:10ID:vDGTjfKT0 2ちゃんねるスレッド全文検索・・・ThreadSearch
http://pc11.2ch.net/test/read.cgi/software/1204107839/
http://www.geocities.jp/cen_hp
こういうのあるみたいだな
http://pc11.2ch.net/test/read.cgi/software/1204107839/
http://www.geocities.jp/cen_hp
こういうのあるみたいだな
287名無しさん@お腹いっぱい。
2008/03/09(日) 00:44:27ID:thuYv79t0 複数行にわたるカギ括弧を検索する場合に、正規表現はどうやればいいんでしょう?
こんなのです。
名無しさん「こんにちは。
さようなら」
名無しさん「(\r\n|.)+?」
ではダメでした。
こんなのです。
名無しさん「こんにちは。
さようなら」
名無しさん「(\r\n|.)+?」
ではダメでした。
2008/03/10(月) 21:46:07ID:a0WOrevN0
289sage
2008/03/19(水) 01:59:29ID:LZ2wSCHz0 devasでヒットした行に秀丸で開く方法ってありますか?
普通に外部エディタで開くとファイルの冒頭が開いてしまうので、
うまいやり方があれば知りたいです。
通常機能の見落としとかだったらごめんなさい。。
普通に外部エディタで開くとファイルの冒頭が開いてしまうので、
うまいやり方があれば知りたいです。
通常機能の見落としとかだったらごめんなさい。。
2008/03/19(水) 02:19:01ID:7NyTkb890
2008/03/19(水) 18:18:52ID:Qpt9KjZm0
>>289
Hidemaru.exe /j%l,%c "%p" で出来たよ。
というか設定した覚えないんだが入力欄の右の三角ボタン押したら出てきた。
みんなそうなのか? それとも自分が昔設定したのを忘れてるだけなのか?
Hidemaru.exe /j%l,%c "%p" で出来たよ。
というか設定した覚えないんだが入力欄の右の三角ボタン押したら出てきた。
みんなそうなのか? それとも自分が昔設定したのを忘れてるだけなのか?
2008/03/21(金) 18:15:31ID:XkB5/6dU0
esplorist
ttp://www15.big.or.jp/~t98907/esploristo/
ttp://www15.big.or.jp/~t98907/esploristo/
293名無しさん@お腹いっぱい。
2008/03/23(日) 08:57:49ID:x0fxQx6m0 日本語版はないが、これがBest。
複数条件(正規表現有)で複数ファイルを一括検索、
条件を保存/呼出可能,検索結果を直接編集可能.
>PowerGrep
ttp://www.powergrep.com/screen.html
複数条件(正規表現有)で複数ファイルを一括検索、
条件を保存/呼出可能,検索結果を直接編集可能.
>PowerGrep
ttp://www.powergrep.com/screen.html
2008/03/23(日) 18:13:10ID:upoodefD0
>>293
シングルユーザライセンスで US$ 149.00 は高すぎ
シングルユーザライセンスで US$ 149.00 は高すぎ
2008/03/23(日) 20:48:51ID:ONdIQf9x0
∧_∧
ミ ゚д゚ミ US$ 149.!?
( つ旦O
と_)_)
∧_∧
ミ ゚д゚ミ ガシャ
( つ O. __
と_)_) (__()、;.o:。
゚*・:.。
ミ ゚д゚ミ US$ 149.!?
( つ旦O
と_)_)
∧_∧
ミ ゚д゚ミ ガシャ
( つ O. __
と_)_) (__()、;.o:。
゚*・:.。
2008/03/23(日) 21:14:12ID:bciZDfUa0
たった、1,490円くらい払えないのか?
一ドル100円だと計算が簡単!
シェアウェアの概念も理解できないやつはソフトを使うべきでないね
一ドル100円だと計算が簡単!
シェアウェアの概念も理解できないやつはソフトを使うべきでないね
2008/03/23(日) 21:23:29ID:5GzZCO100
>US$ 149.00 = たった、1,490円
>一ドル100円だと計算が簡単!
/ ̄ ̄ ̄\
/ ─ ─ \
/ <○> <○> \
| (__人__) |
\ ` ⌒´ /
/ \
2008/03/23(日) 21:28:41ID:5GzZCO100
∩ ∩
| つ ⊂|
∧ノ~ ! ,'っ _c,!
ミ| ・ \ ⊂/ ・ \
ミ| ... '_) | __,,▼
ミ|. (,,゚Д゚) |・ (,,゚Д゚)
| (ノ |) | (ノ |)
| | |・・ |
人.._,,,ノ ι.・,,_,ノ
U"U U"U
| つ ⊂|
∧ノ~ ! ,'っ _c,!
ミ| ・ \ ⊂/ ・ \
ミ| ... '_) | __,,▼
ミ|. (,,゚Д゚) |・ (,,゚Д゚)
| (ノ |) | (ノ |)
| | |・・ |
人.._,,,ノ ι.・,,_,ノ
U"U U"U
2008/03/23(日) 21:34:03ID:ONdIQf9x0
つ、釣られないぞ・・・
2008/03/23(日) 21:56:43ID:D8UzArPP0
さんすうできなくてもシェアウェアは使えるんだな。
2008/03/24(月) 08:55:56ID:HhQF8TOr0
1490円
___ .__US$ 149.00
| |\ | ||
| | | | ||
| | | | ||
| | | | ||
| | | |_||
| | |//
| | | / グラフにして値段を立体化して比較すると分かりやすい
| | | / むしろ1490円の方が高そうに感じられる
| | |/
| | ./
|___|/
/ /
___ .__US$ 149.00
| |\ | ||
| | | | ||
| | | | ||
| | | | ||
| | | |_||
| | |//
| | | / グラフにして値段を立体化して比較すると分かりやすい
| | | / むしろ1490円の方が高そうに感じられる
| | |/
| | ./
|___|/
/ /
302名無しさん@お腹いっぱい。
2008/03/24(月) 15:30:19ID:t5L/gIoh0 この新しいエディタを昨日からさわっているけど、中々いいですね。
GREP がとにかく小気味よい程、早く検索できる。WZ よりよほど
早いです。秀丸なんかおもちゃにみえるよ。
http://www.venus.dti.ne.jp/mw31/apsaly/index.html
GREP がとにかく小気味よい程、早く検索できる。WZ よりよほど
早いです。秀丸なんかおもちゃにみえるよ。
http://www.venus.dti.ne.jp/mw31/apsaly/index.html
2008/03/24(月) 17:29:15ID:lX7tG+Iw0
釣られないぞ…
304名無しさん@お腹いっぱい。
2008/03/25(火) 07:49:13ID:NKNTiUWF0 >>293
なんかごちゃごちゃしてて見にくい
なんかごちゃごちゃしてて見にくい
305かばとっと
2008/03/25(火) 09:56:30ID:JGf0FHK40 年賀状の配達は無事すんだかどうかわかりますでしょうか。
2008/03/25(火) 14:30:49ID:E23NmTLO0
何の話や
2008/03/26(水) 00:21:13ID:4L2r+ORF0
>>302のApsalyのGrepは最強だぞ。
改行\nを検索条件に1つまでしか含めない秀丸と違って
Apsalyは\nをいくつでも含められるし、
(.*\n)*.*Apsaly
のようなパターンで、ファイル先頭から特定キーワードが現れる
部分までの複数行をGrep結果ウインドウに出力することも可能。
複数行マッチの検索条件でもGrep結果ウインドウには
1行しか表示されないものがほとんどなのでこの機能は有用すぎ。
これより優秀なエディタやGrepソフトがあったらそれに乗り換えるから教えて欲しい。
改行\nを検索条件に1つまでしか含めない秀丸と違って
Apsalyは\nをいくつでも含められるし、
(.*\n)*.*Apsaly
のようなパターンで、ファイル先頭から特定キーワードが現れる
部分までの複数行をGrep結果ウインドウに出力することも可能。
複数行マッチの検索条件でもGrep結果ウインドウには
1行しか表示されないものがほとんどなのでこの機能は有用すぎ。
これより優秀なエディタやGrepソフトがあったらそれに乗り換えるから教えて欲しい。
308名無しさん@お腹いっぱい。
2008/03/26(水) 07:37:22ID:Ud6TQ3Dm0 つDevas、esploristo
309名無しさん@お腹いっぱい。
2008/03/28(金) 16:18:11ID:urZJjDJJ0 >>293-301
クソワロタ
クソワロタ
310名無しさん@お腹いっぱい。
2008/03/30(日) 10:48:17ID:rivzl/0v0 検索.txtに検索する単語50個
log.txtに該当する単語があったら抽出出来るソフトってありませんか?
色々探しては見たものの、どれも検索単語を複数入力しないといけないので・・・
log.txtに該当する単語があったら抽出出来るソフトってありませんか?
色々探しては見たものの、どれも検索単語を複数入力しないといけないので・・・
2008/03/30(日) 11:16:32ID:FJgMhnmx0
2008/03/30(日) 11:45:06ID:SrNFDg8P0
>>310
検索パラメータファイルに検索キーワードを50個記載しておくってこと?
検索パラメータファイルに検索キーワードを50個記載しておくってこと?
2008/03/30(日) 11:50:06ID:rivzl/0v0
2008/03/30(日) 11:57:04ID:SUUR1CF40
2008/03/30(日) 12:08:24ID:rivzl/0v0
>>314
ありがとうございます!
無事に取り出せました。
ちなみに
grep -f 検索.txt log.txt
だと、検索.txtに111p
log.txtに111
とあった場合取り出せませんよね?
含まれる行も取り出す事は可能でしょうか?
ありがとうございます!
無事に取り出せました。
ちなみに
grep -f 検索.txt log.txt
だと、検索.txtに111p
log.txtに111
とあった場合取り出せませんよね?
含まれる行も取り出す事は可能でしょうか?
2008/03/30(日) 12:27:46ID:SUUR1CF40
2008/03/30(日) 13:37:27ID:rivzl/0v0
2008/03/31(月) 15:49:22ID:GNmfTnoK0
aabbcc
aaescc
bbddas
ってあるとき
aabbccってgrepで取り出せる?
条件は二つ同じのが3つ並んでるとき。
aaescc
bbddas
ってあるとき
aabbccってgrepで取り出せる?
条件は二つ同じのが3つ並んでるとき。
2008/03/31(月) 15:50:42ID:GNmfTnoK0
2008/03/31(月) 16:16:08ID:QAkk307F0
>>319
後方参照
yagrep なら
yagrep -P "(?:(.)\1){3}" foo.txt
でいけた
普通の grep でも
grep -E "(.)\1(.)\2(.)\3" foo.txt
でいいと思う
後方参照
yagrep なら
yagrep -P "(?:(.)\1){3}" foo.txt
でいけた
普通の grep でも
grep -E "(.)\1(.)\2(.)\3" foo.txt
でいいと思う
2008/03/31(月) 16:35:48ID:GNmfTnoK0
2008/04/13(日) 17:36:48ID:vsOwFhfz0
2008/04/14(月) 00:35:16ID:nXYmW7Eo0
2008/04/21(月) 00:53:44ID:alSg4bwr0
質問させてください
テキストファイル内に
建造物 (けんぞうぶつ)
構築物 (こうちくぶつ)
構造体 (こうぞうたい)
()でくくられた文字のみを取り出したいのですが可能でしょうか?
テキストファイル内に
建造物 (けんぞうぶつ)
構築物 (こうちくぶつ)
構造体 (こうぞうたい)
()でくくられた文字のみを取り出したいのですが可能でしょうか?
2008/04/21(月) 10:48:33ID:M8rC6zmq0
テキストのフォーマットが本当に
建造物 (けんぞうぶつ)
構築物 (こうちくぶつ)
構造体 (こうぞうたい)
となっているなら、上の後方参照を使えばいい。
そうでないなら、Ruby のワンライナで
ruby -e "ARGF.read.scan(/\(([^(]*?)\)/) {|matched| puts matched }" FILE > result.txt
とか。他にもうまい方法あるだろうけどね。
建造物 (けんぞうぶつ)
構築物 (こうちくぶつ)
構造体 (こうぞうたい)
となっているなら、上の後方参照を使えばいい。
そうでないなら、Ruby のワンライナで
ruby -e "ARGF.read.scan(/\(([^(]*?)\)/) {|matched| puts matched }" FILE > result.txt
とか。他にもうまい方法あるだろうけどね。
2008/04/21(月) 11:53:00ID:uxOxQC7/0
オレはDevasで (.+) を正規表現検索して、ヒット語をテキスト出力、
あとは「(」と「)」を置換で削除だな。
最短一致の必要がある場合は「)」を「)\n」に
あらかじめ置換しておいてさ。
1回でできるだろうことは分かっているが、
正規表現って、検索式を考えているうちに
慣れている方法でやったほうが速いってとこないか?
だもんだから、全然成長しないという悪循環。
Devasで一発でやるには、どう書くんだこれ?^^
あとは「(」と「)」を置換で削除だな。
最短一致の必要がある場合は「)」を「)\n」に
あらかじめ置換しておいてさ。
1回でできるだろうことは分かっているが、
正規表現って、検索式を考えているうちに
慣れている方法でやったほうが速いってとこないか?
だもんだから、全然成長しないという悪循環。
Devasで一発でやるには、どう書くんだこれ?^^
327名無しさん@お腹いっぱい。
2008/04/21(月) 12:09:40ID:ZehJvgPi0 \((.+?)\)→\1
でいいんだろ?
バカなの?
でいいんだろ?
バカなの?
2008/04/21(月) 17:14:01ID:kYW1CBVc0
あらかじめ置換しておくとか>>326は酷過ぎだろwww
正規表現を使っている意味がない。
正規表現を使っている意味がない。
2008/04/21(月) 17:27:18ID:UuiIK+bh0
吹いたw
2008/04/21(月) 17:34:12ID:/rotEjDu0
見事なまでの本末転倒
2008/04/21(月) 17:47:02ID:FCOzyomh0
2008/04/21(月) 17:54:26ID:Je0+zwoU0
まぁでも
> 正規表現って、検索式を考えているうちに
> 慣れている方法でやったほうが速いってとこないか?
これはあるよ
> 正規表現って、検索式を考えているうちに
> 慣れている方法でやったほうが速いってとこないか?
これはあるよ
2008/04/23(水) 08:07:43ID:l22vamBk0
Rubyでワンライナーが以外に便利だとわかった
Rubyでワンライナーを書く方法のまとめ
http://blog.lilyx.net/2007/11/29/writing-one-liner-in-ruby/
Ruby -e -pをaliasにするとか、batにしとくとかしとくとよさそう
Rubyでワンライナーを書く方法のまとめ
http://blog.lilyx.net/2007/11/29/writing-one-liner-in-ruby/
Ruby -e -pをaliasにするとか、batにしとくとかしとくとよさそう
2008/04/23(水) 09:44:56ID:vmcJmpcr0
Devas もコマンドラインで処理できるので
grep や置換そのものは Ruby でやる必要ないだろうけど
grep:
ruby -Ks -n -e"print $_ if /PATTERN/ =~ $_" FILE ...
ruby -Ks -e"ARGF.grep(/PATTERN/) {|line| print line }" FILE ...
ruby -Ks -e"puts ARGF.grep(/PATTERN/)" FILE ...
置換:
(確認)ruby -Ks -p -e"$_.gsub!(/PATTERN/, 'REPLACE')" FILE ...
(実行)ruby -Ks -i.bak -p -e"$_.gsub!(/PATTERN/, 'REPLACE')" FILE ...
>>331 のジャンプなセリフが気に入った
grep や置換そのものは Ruby でやる必要ないだろうけど
grep:
ruby -Ks -n -e"print $_ if /PATTERN/ =~ $_" FILE ...
ruby -Ks -e"ARGF.grep(/PATTERN/) {|line| print line }" FILE ...
ruby -Ks -e"puts ARGF.grep(/PATTERN/)" FILE ...
置換:
(確認)ruby -Ks -p -e"$_.gsub!(/PATTERN/, 'REPLACE')" FILE ...
(実行)ruby -Ks -i.bak -p -e"$_.gsub!(/PATTERN/, 'REPLACE')" FILE ...
>>331 のジャンプなセリフが気に入った
2008/05/01(木) 15:05:18ID:QV/ziJc40
ファイルA 一行に品名、日付、価格、数量(タブ区切り) 数十万行
ファイルB 一行に品名、価格(タブ区切り) 数千〜数万行
ファイルAの中からファイルBにマッチする(品名、価格、共に)行もしくはマッチしない行を
抽出するのに向いてるgrepはないですかね?
mfind
ttp://homepage2.nifty.com/magicant/sapps/mfind/
を使えばファイルBを正規表現化してgrep -f みたいなオプションで食わせれば出来るんですが
も少し速度的に良いものが無いかなあと思いまして。
ファイルB 一行に品名、価格(タブ区切り) 数千〜数万行
ファイルAの中からファイルBにマッチする(品名、価格、共に)行もしくはマッチしない行を
抽出するのに向いてるgrepはないですかね?
mfind
ttp://homepage2.nifty.com/magicant/sapps/mfind/
を使えばファイルBを正規表現化してgrep -f みたいなオプションで食わせれば出来るんですが
も少し速度的に良いものが無いかなあと思いまして。
336名無しさん@お腹いっぱい。
2008/05/01(木) 15:14:26ID:FzAtGAVl0 C言語つかう
337名無しさん@お腹いっぱい。
2008/05/01(木) 15:19:14ID:FzAtGAVl0 品名と価格が一致するやつを出力するC言語作ってやるぜ
338337
2008/05/01(木) 16:37:45ID:FzAtGAVl0 #include <string>
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
class hash{ public: unsigned char x; int n; hash(){x=0;n=0;}};
unsigned int Crc32( unsigned char * , unsigned int);
int main(int argc, char *argv[]){
if(argc!=3)return 0;string str;
fstream fp(argv[1] , ios::in ); if(fp==NULL)return 0;
fstream fq(argv[2] , ios::in ); if(fq==NULL)return 0;
unsigned char f[1000],t[10],w; int x,n,num=1;unsigned int z;
vector< hash > hs(16*1024*1024+1024);
while(!fp.eof()){
getline(fp,str);
sscanf(&str[0],"%s %s %d",f,t,&x);
if(x<0 || x>10000000) {cout <<"err "<<f<<endl; continue; }
n=strlen(f);memcpy(&f[n],&x,4);z=Crc32(&f[0],n+4); w=z&255; z>>=8;
for(n=0;n<1024;n++)if(hs[z+n].x==w)break;
else if(hs[z+n].x==0 && hs[z+n].n==0){hs[z+n].x=w; hs[z+n].n=num; break;}
num++;}fp.close();
while(!fq.eof()){
getline(fq,str);
sscanf(&str[0],"%s %d",f,&x);
if(x<0 || x>10000000) continue;
int k=strlen(f);memcpy(&f[k],&x,4);z=Crc32(&f[0],k+4);w=z&255; z>>=8;
for(n=0;n<1024;n++) if(hs[z+n].x==w) {f[k]=0;
cout<<hs[z+n].n<<"番目に登録されているデータと一致 商品名 "<<f<<" 価格 "<<x<<endl;}
}fq.close();}
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
class hash{ public: unsigned char x; int n; hash(){x=0;n=0;}};
unsigned int Crc32( unsigned char * , unsigned int);
int main(int argc, char *argv[]){
if(argc!=3)return 0;string str;
fstream fp(argv[1] , ios::in ); if(fp==NULL)return 0;
fstream fq(argv[2] , ios::in ); if(fq==NULL)return 0;
unsigned char f[1000],t[10],w; int x,n,num=1;unsigned int z;
vector< hash > hs(16*1024*1024+1024);
while(!fp.eof()){
getline(fp,str);
sscanf(&str[0],"%s %s %d",f,t,&x);
if(x<0 || x>10000000) {cout <<"err "<<f<<endl; continue; }
n=strlen(f);memcpy(&f[n],&x,4);z=Crc32(&f[0],n+4); w=z&255; z>>=8;
for(n=0;n<1024;n++)if(hs[z+n].x==w)break;
else if(hs[z+n].x==0 && hs[z+n].n==0){hs[z+n].x=w; hs[z+n].n=num; break;}
num++;}fp.close();
while(!fq.eof()){
getline(fq,str);
sscanf(&str[0],"%s %d",f,&x);
if(x<0 || x>10000000) continue;
int k=strlen(f);memcpy(&f[k],&x,4);z=Crc32(&f[0],k+4);w=z&255; z>>=8;
for(n=0;n<1024;n++) if(hs[z+n].x==w) {f[k]=0;
cout<<hs[z+n].n<<"番目に登録されているデータと一致 商品名 "<<f<<" 価格 "<<x<<endl;}
}fq.close();}
339337
2008/05/01(木) 16:39:26ID:FzAtGAVl0 static const unsigned int crcT[256] = {
0x00000000,0x77073096,0xEE0E612C,0x990951BA,0x076DC419,0x706AF48F,0xE963A535,
0x9E6495A3,0x0EDB8832,0x79DCB8A4,0xE0D5E91E,0x97D2D988,0x09B64C2B,0x7EB17CBD,
0xE7B82D07,0x90BF1D91,0x1DB71064,0x6AB020F2,0xF3B97148,0x84BE41DE,0x1ADAD47D,
0x6DDDE4EB,0xF4D4B551,0x83D385C7,0x136C9856,0x646BA8C0,0xFD62F97A,0x8A65C9EC,
0x14015C4F,0x63066CD9,0xFA0F3D63,0x8D080DF5,0x3B6E20C8,0x4C69105E,0xD56041E4,
0xA2677172,0x3C03E4D1,0x4B04D447,0xD20D85FD,0xA50AB56B,0x35B5A8FA,0x42B2986C,
0xDBBBC9D6,0xACBCF940,0x32D86CE3,0x45DF5C75,0xDCD60DCF,0xABD13D59,0x26D930AC,
0x51DE003A,0xC8D75180,0xBFD06116,0x21B4F4B5,0x56B3C423,0xCFBA9599,0xB8BDA50F,
0x2802B89E,0x5F058808,0xC60CD9B2,0xB10BE924,0x2F6F7C87,0x58684C11,0xC1611DAB,
0xB6662D3D,0x76DC4190,0x01DB7106,0x98D220BC,0xEFD5102A,0x71B18589,0x06B6B51F,
0x9FBFE4A5,0xE8B8D433,0x7807C9A2,0x0F00F934,0x9609A88E,0xE10E9818,0x7F6A0DBB,
0x086D3D2D,0x91646C97,0xE6635C01,0x6B6B51F4,0x1C6C6162,0x856530D8,0xF262004E,
0x6C0695ED,0x1B01A57B,0x8208F4C1,0xF50FC457,0x65B0D9C6,0x12B7E950,0x8BBEB8EA,
0xFCB9887C,0x62DD1DDF,0x15DA2D49,0x8CD37CF3,0xFBD44C65,0x4DB26158,0x3AB551CE,
0xA3BC0074,0xD4BB30E2,0x4ADFA541,0x3DD895D7,0xA4D1C46D,0xD3D6F4FB,0x4369E96A,
0x346ED9FC,0xAD678846,0xDA60B8D0,0x44042D73,0x33031DE5,0xAA0A4C5F,0xDD0D7CC9,
0x5005713C,0x270241AA,0xBE0B1010,0xC90C2086,0x5768B525,0x206F85B3,0xB966D409,
0xCE61E49F,0x5EDEF90E,0x29D9C998,0xB0D09822,0xC7D7A8B4,0x59B33D17,0x2EB40D81,
0xB7BD5C3B,0xC0BA6CAD,0xEDB88320,0x9ABFB3B6,0x03B6E20C,0x74B1D29A,0xEAD54739,
0x9DD277AF,0x04DB2615,0x73DC1683,0xE3630B12,0x94643B84,0x0D6D6A3E,0x7A6A5AA8,
0xE40ECF0B,0x9309FF9D,0x0A00AE27,0x7D079EB1,0xF00F9344,0x8708A3D2,0x1E01F268,
0x6906C2FE,0xF762575D,0x806567CB,0x196C3671,0x6E6B06E7,0xFED41B76,0x89D32BE0,
0x00000000,0x77073096,0xEE0E612C,0x990951BA,0x076DC419,0x706AF48F,0xE963A535,
0x9E6495A3,0x0EDB8832,0x79DCB8A4,0xE0D5E91E,0x97D2D988,0x09B64C2B,0x7EB17CBD,
0xE7B82D07,0x90BF1D91,0x1DB71064,0x6AB020F2,0xF3B97148,0x84BE41DE,0x1ADAD47D,
0x6DDDE4EB,0xF4D4B551,0x83D385C7,0x136C9856,0x646BA8C0,0xFD62F97A,0x8A65C9EC,
0x14015C4F,0x63066CD9,0xFA0F3D63,0x8D080DF5,0x3B6E20C8,0x4C69105E,0xD56041E4,
0xA2677172,0x3C03E4D1,0x4B04D447,0xD20D85FD,0xA50AB56B,0x35B5A8FA,0x42B2986C,
0xDBBBC9D6,0xACBCF940,0x32D86CE3,0x45DF5C75,0xDCD60DCF,0xABD13D59,0x26D930AC,
0x51DE003A,0xC8D75180,0xBFD06116,0x21B4F4B5,0x56B3C423,0xCFBA9599,0xB8BDA50F,
0x2802B89E,0x5F058808,0xC60CD9B2,0xB10BE924,0x2F6F7C87,0x58684C11,0xC1611DAB,
0xB6662D3D,0x76DC4190,0x01DB7106,0x98D220BC,0xEFD5102A,0x71B18589,0x06B6B51F,
0x9FBFE4A5,0xE8B8D433,0x7807C9A2,0x0F00F934,0x9609A88E,0xE10E9818,0x7F6A0DBB,
0x086D3D2D,0x91646C97,0xE6635C01,0x6B6B51F4,0x1C6C6162,0x856530D8,0xF262004E,
0x6C0695ED,0x1B01A57B,0x8208F4C1,0xF50FC457,0x65B0D9C6,0x12B7E950,0x8BBEB8EA,
0xFCB9887C,0x62DD1DDF,0x15DA2D49,0x8CD37CF3,0xFBD44C65,0x4DB26158,0x3AB551CE,
0xA3BC0074,0xD4BB30E2,0x4ADFA541,0x3DD895D7,0xA4D1C46D,0xD3D6F4FB,0x4369E96A,
0x346ED9FC,0xAD678846,0xDA60B8D0,0x44042D73,0x33031DE5,0xAA0A4C5F,0xDD0D7CC9,
0x5005713C,0x270241AA,0xBE0B1010,0xC90C2086,0x5768B525,0x206F85B3,0xB966D409,
0xCE61E49F,0x5EDEF90E,0x29D9C998,0xB0D09822,0xC7D7A8B4,0x59B33D17,0x2EB40D81,
0xB7BD5C3B,0xC0BA6CAD,0xEDB88320,0x9ABFB3B6,0x03B6E20C,0x74B1D29A,0xEAD54739,
0x9DD277AF,0x04DB2615,0x73DC1683,0xE3630B12,0x94643B84,0x0D6D6A3E,0x7A6A5AA8,
0xE40ECF0B,0x9309FF9D,0x0A00AE27,0x7D079EB1,0xF00F9344,0x8708A3D2,0x1E01F268,
0x6906C2FE,0xF762575D,0x806567CB,0x196C3671,0x6E6B06E7,0xFED41B76,0x89D32BE0,
340337
2008/05/01(木) 16:39:50ID:FzAtGAVl0 0x10DA7A5A,0x67DD4ACC,0xF9B9DF6F,0x8EBEEFF9,0x17B7BE43,0x60B08ED5,0xD6D6A3E8,
0xA1D1937E,0x38D8C2C4,0x4FDFF252,0xD1BB67F1,0xA6BC5767,0x3FB506DD,0x48B2364B,
0xD80D2BDA,0xAF0A1B4C,0x36034AF6,0x41047A60,0xDF60EFC3,0xA867DF55,0x316E8EEF,
0x4669BE79,0xCB61B38C,0xBC66831A,0x256FD2A0,0x5268E236,0xCC0C7795,0xBB0B4703,
0x220216B9,0x5505262F,0xC5BA3BBE,0xB2BD0B28,0x2BB45A92,0x5CB36A04,0xC2D7FFA7,
0xB5D0CF31,0x2CD99E8B,0x5BDEAE1D,0x9B64C2B0,0xEC63F226,0x756AA39C,0x026D930A,
0x9C0906A9,0xEB0E363F,0x72076785,0x05005713,0x95BF4A82,0xE2B87A14,0x7BB12BAE,
0x0CB61B38,0x92D28E9B,0xE5D5BE0D,0x7CDCEFB7,0x0BDBDF21,0x86D3D2D4,0xF1D4E242,
0x68DDB3F8,0x1FDA836E,0x81BE16CD,0xF6B9265B,0x6FB077E1,0x18B74777,0x88085AE6,
0xFF0F6A70,0x66063BCA,0x11010B5C,0x8F659EFF,0xF862AE69,0x616BFFD3,0x166CCF45,
0xA00AE278,0xD70DD2EE,0x4E048354,0x3903B3C2,0xA7672661,0xD06016F7,0x4969474D,
0x3E6E77DB,0xAED16A4A,0xD9D65ADC,0x40DF0B66,0x37D83BF0,0xA9BCAE53,0xDEBB9EC5,
0x47B2CF7F,0x30B5FFE9,0xBDBDF21C,0xCABAC28A,0x53B39330,0x24B4A3A6,0xBAD03605,
0xCDD70693,0x54DE5729,0x23D967BF,0xB3667A2E,0xC4614AB8,0x5D681B02,0x2A6F2B94,
0xB40BBE37,0xC30C8EA1,0x5A05DF1B,0x2D02EF8D };
unsigned int Crc32( unsigned char *buf, unsigned int bufLen ){
unsigned int crc32=0xFFFFFFFF;
for (unsigned int i=0; i < bufLen; i++)
crc32 = (crc32 >> 8) ^ crcT[ (crc32 ^ buf[i]) & 0xFF ];
return( crc32 ^ 0xFFFFFFFF );}
0xA1D1937E,0x38D8C2C4,0x4FDFF252,0xD1BB67F1,0xA6BC5767,0x3FB506DD,0x48B2364B,
0xD80D2BDA,0xAF0A1B4C,0x36034AF6,0x41047A60,0xDF60EFC3,0xA867DF55,0x316E8EEF,
0x4669BE79,0xCB61B38C,0xBC66831A,0x256FD2A0,0x5268E236,0xCC0C7795,0xBB0B4703,
0x220216B9,0x5505262F,0xC5BA3BBE,0xB2BD0B28,0x2BB45A92,0x5CB36A04,0xC2D7FFA7,
0xB5D0CF31,0x2CD99E8B,0x5BDEAE1D,0x9B64C2B0,0xEC63F226,0x756AA39C,0x026D930A,
0x9C0906A9,0xEB0E363F,0x72076785,0x05005713,0x95BF4A82,0xE2B87A14,0x7BB12BAE,
0x0CB61B38,0x92D28E9B,0xE5D5BE0D,0x7CDCEFB7,0x0BDBDF21,0x86D3D2D4,0xF1D4E242,
0x68DDB3F8,0x1FDA836E,0x81BE16CD,0xF6B9265B,0x6FB077E1,0x18B74777,0x88085AE6,
0xFF0F6A70,0x66063BCA,0x11010B5C,0x8F659EFF,0xF862AE69,0x616BFFD3,0x166CCF45,
0xA00AE278,0xD70DD2EE,0x4E048354,0x3903B3C2,0xA7672661,0xD06016F7,0x4969474D,
0x3E6E77DB,0xAED16A4A,0xD9D65ADC,0x40DF0B66,0x37D83BF0,0xA9BCAE53,0xDEBB9EC5,
0x47B2CF7F,0x30B5FFE9,0xBDBDF21C,0xCABAC28A,0x53B39330,0x24B4A3A6,0xBAD03605,
0xCDD70693,0x54DE5729,0x23D967BF,0xB3667A2E,0xC4614AB8,0x5D681B02,0x2A6F2B94,
0xB40BBE37,0xC30C8EA1,0x5A05DF1B,0x2D02EF8D };
unsigned int Crc32( unsigned char *buf, unsigned int bufLen ){
unsigned int crc32=0xFFFFFFFF;
for (unsigned int i=0; i < bufLen; i++)
crc32 = (crc32 >> 8) ^ crcT[ (crc32 ^ buf[i]) & 0xFF ];
return( crc32 ^ 0xFFFFFFFF );}
341337
2008/05/01(木) 16:44:38ID:FzAtGAVl02008/05/01(木) 22:21:07ID:/6hzVxqK0
ベーシックマガジンかと思った
2008/05/02(金) 00:14:49ID:3GewBeeE0
>>335
同じ品物に複数の価格が割り当てられるケースだと、ファイルBを
^品物A[TAB].*?[TAB](価格A1|価格A2|...)[TAB]
^品物B[TAB].*?[TAB](価格B1|価格B2|...)[TAB]
みたいにすれば、行頭を繰り返し照合しなくてすむから速くなる。
とりあえずRubyで書いてみた。
##########
patterns = Hash.new {|hash, key| hash[key] = [] }
row = nil
ARGF.each do |line|
row = line.split(/\t/)
patterns[row.at(0)] << row.at(1).chomp
end
patterns.each {|name, values| puts "^#{name}\t.*?\t(#{values.uniq.join('|')})\t" }
##########
>ファイルA 一行に品名、日付、価格、数量(タブ区切り) 数十万行
>ファイルB 一行に品名、価格(タブ区切り) 数千〜数万行
両方ともなかなかでかいけれど、grep にどれくらいかかるものなんだろうか
同じ品物に複数の価格が割り当てられるケースだと、ファイルBを
^品物A[TAB].*?[TAB](価格A1|価格A2|...)[TAB]
^品物B[TAB].*?[TAB](価格B1|価格B2|...)[TAB]
みたいにすれば、行頭を繰り返し照合しなくてすむから速くなる。
とりあえずRubyで書いてみた。
##########
patterns = Hash.new {|hash, key| hash[key] = [] }
row = nil
ARGF.each do |line|
row = line.split(/\t/)
patterns[row.at(0)] << row.at(1).chomp
end
patterns.each {|name, values| puts "^#{name}\t.*?\t(#{values.uniq.join('|')})\t" }
##########
>ファイルA 一行に品名、日付、価格、数量(タブ区切り) 数十万行
>ファイルB 一行に品名、価格(タブ区切り) 数千〜数万行
両方ともなかなかでかいけれど、grep にどれくらいかかるものなんだろうか
2008/05/02(金) 09:34:18ID:VmUaHqll0
SQLiteに放り込んでからselectで吸い出すのは反則か
345名無しさん@お腹いっぱい。
2008/05/02(金) 10:36:09ID:2+Xim1/50 マンドクセ
2008/05/02(金) 12:50:39ID:CsFJNg0f0
数千〜数万件をselectで吸い出すのは実用的?
347名無しさん@お腹いっぱい。
2008/05/02(金) 14:09:23ID:2+Xim1/50 データによる
2008/05/02(金) 23:01:38ID:QMt2mgO70
Repl-Aceのニューバージョンが
349名無しさん@お腹いっぱい。
2008/05/05(月) 18:04:03ID:SC/kHrba0 一度に何十ものキーワードを指定してGREPしたいことがあるけど、それができる
ソフトってないかな。
ソフトってないかな。
2008/05/05(月) 18:33:00ID:axswZt8w0
2008/05/08(木) 19:02:23ID:PPWfCznk0
窓の杜 - 【NEWS】複数ファイルの文字列置換「Repl-Ace」の後継「Repl-Ace on .NET」v1.0が公開
http://www.forest.impress.co.jp/article/2008/05/08/replaceondotnet.html
http://www.forest.impress.co.jp/article/2008/05/08/replaceondotnet.html
352名無しさん@お腹いっぱい。
2008/05/14(水) 15:15:14ID:KzYWfa790 新着ソフトレビュー - esploristo 約150種類の文字コードを自動判別する、正規表現対応の文字列検索・置換ソフト
http://www.vector.co.jp/magazine/softnews/080513/n0805133.html?ref=rss
http://www.vector.co.jp/magazine/softnews/080513/n0805133.html?ref=rss
2008/05/14(水) 20:21:12ID:2FJwLA2s0
2008/05/14(水) 21:14:36ID:TdqYvc500
正規表現使いこなせてねええw
2008/05/14(水) 21:30:18ID:2FJwLA2s0
いや、正規表現で無理なのもあるだろw
全く同じ文章とかな。
全く同じ文章とかな。
2008/05/15(木) 08:26:35ID:pFSH9ULK0
いや、不可能を可能にするのが正規表現だろw
2008/05/15(木) 12:47:56ID:eEcqcSkc0
正規表現の中に食品を置いておくと腐らないそうだ
2008/05/15(木) 16:12:41ID:lZHfvTBk0
正規表現ってなんかエロい。
2008/05/15(木) 16:40:07ID:Mrn8hmIy0
性器表現?(.*)辺りか?
2008/05/16(金) 00:35:24ID:u3CmuSie0
>>358
それは、オライリーの詳説・正規表現でかまされていた冗談だな。
それは、オライリーの詳説・正規表現でかまされていた冗談だな。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相が国会で突如「秘書のがんステージ4」を公表にネット騒然…“招致拒否の布石では”と憶測も ★3 [少考さん★]
- 米Anthropic「AIの自己進化が始まった、世界はAI開発を一旦止めるべき」 ★4 [煮卵★]
- 石破氏、日本国旗損壊罪に疑問 「刑罰あまり正しくない」 [蚤の市★]
- 『バ先』『タイパ』『カプヌ』『りくりゅう』…昭和生まれが「イラっとする」略語は?若者世代の“謎言葉”に大混乱 [muffin★]
- 高市首相が国会で突如「秘書のがんステージ4」を公表にネット騒然…“招致拒否の布石では”と憶測も ★4 [少考さん★]
- 送検された女性「扱い理不尽」 安和ダンプ事故 「戦前に近いやり方に」 沖縄 [少考さん★]
- 【実況】博衣こよりのえちえち復活🧪★2
- 【実況】博衣こよりのえちえち復活🧪
- おまえら「いとこ」と結婚できる????? [377482965]
- 新工場を建設であずきバーの供給体制が強化される。生産能力が1.3倍に 日本国民があずきバーに困る事がなくなる [152212454]
- 【悲報】高市秘書の“膵臓ガンステージ4”発言、文春逃れではなく生稲晃子の質問への政策答弁だった [834922174]
- 【叙述トリック】高市早苗は「私の秘書がステージ4の膵臓がん」とは言っていても「木下秘書が末期がん」とは一言も言ってないっぽい [784319933]