[前の記事]« バッチ起動時に指定した回数だけFOR文を実行するには
[次の記事][WIN2000]サーバーへのログイン時に自動で空白のパスワードを入力するには »

関連オンラインソフト配布サイト:
Vector>ダウンロード(top) |>MS-DOSまたは汎用 | >WindowsVista/XP/2000/NT

▲カテゴリー「FIND,FINDSTR,SORT…テキストファイル内文字列の操作」索引へ
▲カテゴリー「FOR /F」索引へ

ファイル内から指定の文字列を検索し、そこから10文字を抽出したい

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
    •  658.  Re:ファイル内にある指定文字から10文字を検索する (Hellcat)   2003/10/06(月) 20:48
 
 


カテゴリー「FIND,FINDSTR,SORT…テキストファイル内文字列の操作」索引へ
カテゴリー「FOR /F」索引へ

 

カテゴリー一覧

FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


=リンク集のインデックスはこちら=

資料書籍

About

2003年10月06日 16:25に投稿されたエントリーのページです。

ひとつ前の投稿は「バッチ起動時に指定した回数だけFOR文を実行するには」です。

次の投稿は「[WIN2000]サーバーへのログイン時に自動で空白のパスワードを入力するには」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

This site is powered by Six Apart
Movable Type 3.33-ja
このブログについて | 運営:有限会社メディアポート