655) ファイル内にある指定文字から10文字を検索する ししる 2003/10/06(月) 16:24 |
|
|
|
はじめまして こんにちは 題名にもありますが、ファイル内に必ずある文字を検索し、その文字から10文字分を 抽出することって出来るのでしょうか? ファイル名】 Test.txt 【Test.txtの中身】 ・・・ ・・・ abcdefghijklm… ・・・ ・・・ 【キーワード】「abc」 ・やりたい事 「abc」をキーワードにして後ろの10文字を抽出する。 (尚、「abc」はTest.txtの中に必ずある文字です。) どなたか宜しくお願いします。 |
|
657) Re:ファイル内にある指定文字から10文字を検索する じゃく 2003/10/06(月) 20:35 |
|
|
|
>題名にもありますが、ファイル内に必ずある文字を検索し、その文字から10文字分を >抽出することって出来るのでしょうか? > > >ファイル名】 Test.txt > >【Test.txtの中身】 >・・・ >・・・ >abcdefghijklm… >・・・ >・・・ > >【キーワード】「abc」 > > >・やりたい事 >「abc」をキーワードにして後ろの10文字を抽出する。 >(尚、「abc」はTest.txtの中に必ずある文字です。) わかりにくい点があるので質問させてください。 1)対象OSは何ですか 2)上記例のキーワード[abc]は必ずどこかの行の先頭にあるのですか?それとも行のどこにあるか(何文字目か)不定ですか? 3)行の先頭と限らないとした場合、1行の中に複数の[abc]があったら全ての[abc]に対して10文字を抽出するのですか? 例えばtest.txt に abcdabcdabc..... などとなっている場合はどのように抽出するのがご希望ですか? |
|
659) Re2:ファイル内にある指定文字から10文字を検索する ししる 2003/10/07(火) 13:49 |
|
|
|
ししるです。 コメントありがとうございます。 >わかりにくい点があるので質問させてください。 > >1)対象OSは何ですか Win2000Serverです。 >2)上記例のキーワード[abc]は必ずどこかの行の先頭にあるのですか?それとも行のどこにあるか(何文字目か)不定ですか? 行の先頭にあります。 ちなみに、ファイル内でユニークなキーワードです。 あいまいな表現ですみません。 宜しくお願いします。 |
|
664) Re3:ファイル内にある指定文字から10文字を検索する じゃく 2003/10/08(水) 10:03 |
|
|
|
ししるさん、こんにちは。 >>2)上記例のキーワード[abc]は必ずどこかの行の先頭にあるのですか?それとも行のどこにあるか(何文字目か)不定ですか? >行の先頭にあります。 >ちなみに、ファイル内でユニークなキーワードです。 この条件でキーワード後の10文字を表示するバッチを作ってみました。 キーワードを含む行を切り出す際の制約で test.txt 内に不等号などがあると誤動作するかもしれませんが、試してみてください。 キーワードは引数として指定するようにしています。 例)sample abc ----------------------- sample.bat @echo off for /F "tokens=* delims=" %%l in ('findstr /R "^%1" test.txt') do set kekka=%%l echo set kekka=%%kekka:%1=%% > tmp.bat call tmp.bat set words=%kekka:~0,10% echo %words% del tmp.bat |
|
667) Re4:ファイル内にある指定文字から10文字を検索する じゃく 2003/10/08(水) 10:08 |
|
|
|
ブラウザによっては、先に示したサンプルの1行が2行に見える可能性があるので念のため注記しておきます。 > >----------------------- sample.bat >@echo off >for /F "tokens=* delims=" %%l in ('findstr /R "^%1" test.txt') do set kekka=%%l ↑ここは for から =%%l までで1行です。 |
|
668) Re4:ファイル内にある指定文字から10文字を検索する ししる 2003/10/08(水) 15:23 |
|
|
|
こんにちは、じゃくさん 出来ました。 コメントありがとうございました。 >ししるさん、こんにちは。 > >>>2)上記例のキーワード[abc]は必ずどこかの行の先頭にあるのですか?それとも行のどこにあるか(何文字目か)不定ですか? >>行の先頭にあります。 >>ちなみに、ファイル内でユニークなキーワードです。 > >この条件でキーワード後の10文字を表示するバッチを作ってみました。 >キーワードを含む行を切り出す際の制約で test.txt 内に不等号などがあると誤動作するかもしれませんが、試してみてください。 >キーワードは引数として指定するようにしています。 >例)sample abc > >----------------------- sample.bat >@echo off >for /F "tokens=* delims=" %%l in ('findstr /R "^%1" test.txt') do set kekka=%%l >echo set kekka=%%kekka:%1=%% > tmp.bat >call tmp.bat >set words=%kekka:~0,10% >echo %words% >del tmp.bat > > |
|
658) Re:ファイル内にある指定文字から10文字を検索する Hellcat 2003/10/06(月) 20:48 |
|
|
|
OSが不明ですが、標準的なコマンドでは難しそうですね(やってやれないことはなさそうですが)。 正規表現検索をサポートするコマンド(例えばAWK)なら、比較的簡単に出来そうです。 ここでは、私の手許にあるフリーソフト(IZGREP コマンド)を使った例を御紹介します。 【使い方】 IZGREP -hm abc.......... Test.txt | IZGREP -s abc "" これで、各行中のabcに続く10桁の文字が出力されます。 「.」は任意の文字を表す正規表現です(ここでは必ず10個指定します)。 全角文字にも対応しています。 同一行中に複数個が条件に合致する場合、例えば abc1234567890abc0987654321abc1029384756 となっている場合は、左側の1234567890のみが抽出されます。 すべて合致したものを抽出する場合は、別のスイッチ(-g)を指定します。 abcの判定は大文字・小文字の別を区別します。 abcに続く文字数が10に満たない場合は無視されます。 abcの文字も含めて出力したい場合は パイプ処理部分 | IZGREP -s abc "" をとってしまえばOKです。 【所在】 IZGREPは↓にあります。 http://www.vector.co.jp/soft/dos/util/se004975.html |
|
this article refers Vector Soft Library..
|
- ◆655. ファイル内にある指定文字から10文字を検索する (ししる)
2003/10/06(月) 16:24
- 657. Re:ファイル内にある指定文字から10文字を検索する (じゃく)
2003/10/06(月) 20:35
- 659. Re2:ファイル内にある指定文字から10文字を検索する (ししる)
2003/10/07(火) 13:49
- 664. Re3:ファイル内にある指定文字から10文字を検索する (じゃく)
2003/10/08(水) 10:03
- 667. Re4:ファイル内にある指定文字から10文字を検索する (じゃく) 2003/10/08(水) 10:08
- 668. Re4:ファイル内にある指定文字から10文字を検索する (ししる) 2003/10/08(水) 15:23
- 664. Re3:ファイル内にある指定文字から10文字を検索する (じゃく)
2003/10/08(水) 10:03
- 659. Re2:ファイル内にある指定文字から10文字を検索する (ししる)
2003/10/07(火) 13:49
- 658. Re:ファイル内にある指定文字から10文字を検索する (Hellcat) 2003/10/06(月) 20:48
- 657. Re:ファイル内にある指定文字から10文字を検索する (じゃく)
2003/10/06(月) 20:35