コマンドプロンプトで数値抽出
-
commandbeginner
コマンドプロンプトで数値抽出
C言語でファイルを読み込み、1行ごとの数字だけを読み込み総和を求めるというプログラムは
作れたのですが、コマンドプロンプトでこれをやろうとしたら上手くいきません。
number.txtが
t_q23ta
x?y34ab
x+xXX45wer
という3行のテキストで
数字になってる23,34,45を足して表示するというプログラムです。
1行ごとに、数字が1つだけ隠れていて、これを抽出して総和を求めたいです。
何故数字以外の文字列を入れたかというと、文字列から数字を抽出するという
応用的な事がしたいからです。Cでは配列を用意して数字が出てきたら、文字列の
長さと順番にでてきた数字からint型の変数に変換するというやり方で行いました。
コマンドプロンプトやシェルではどうやってこのコマンドプログラムを汲めばいいのでしょうか?
作れたのですが、コマンドプロンプトでこれをやろうとしたら上手くいきません。
number.txtが
t_q23ta
x?y34ab
x+xXX45wer
という3行のテキストで
数字になってる23,34,45を足して表示するというプログラムです。
1行ごとに、数字が1つだけ隠れていて、これを抽出して総和を求めたいです。
何故数字以外の文字列を入れたかというと、文字列から数字を抽出するという
応用的な事がしたいからです。Cでは配列を用意して数字が出てきたら、文字列の
長さと順番にでてきた数字からint型の変数に変換するというやり方で行いました。
コマンドプロンプトやシェルではどうやってこのコマンドプログラムを汲めばいいのでしょうか?
Re: commandbeginner
ファイルを開く代わりにそのファイルポインタにstdinを代入するだけではないのですか?
書いたプログラムのソースコードを提示することはできますか?
コマンドプロンプトで行った操作も教えていただけるとわかりやすいです。
コードを提示するときは、BBcodeを有効にした状態でcodeタグで囲み、
かつきちんとインデントをしていただけると、見やすくて助かります。
書いたプログラムのソースコードを提示することはできますか?
コマンドプロンプトで行った操作も教えていただけるとわかりやすいです。
コードを提示するときは、BBcodeを有効にした状態でcodeタグで囲み、
かつきちんとインデントをしていただけると、見やすくて助かります。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: コマンドプロンプトで数値抽出
直しておきましたが、丸投げは禁止させて頂いております。
みけCATさんの言われる通り、今出来ているソースコードをお願いします。
みけCATさんの言われる通り、今出来ているソースコードをお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: コマンドプロンプトで数値抽出
もしかして、外部のプログラムに頼らず、コマンドプロンプトの内部コマンドだけでこの処理を行いたいということでしょうか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
-
commandbeginner
Re: コマンドプロンプトで数値抽出
>みけCATさん
はい、コマンドプロンプトのコマンドだけで実現したいです。
Cでは作りましたから。
無理でしょうか?
はい、コマンドプロンプトのコマンドだけで実現したいです。
Cでは作りましたから。
無理でしょうか?
Re: コマンドプロンプトで数値抽出
そもそも
具体的に示してください。
どんなコマンドを入力して、どのようにうまくいかなかったのでしょうか。commandbeginner さんが書きました:コマンドプロンプトでこれをやろうとしたら上手くいきません。
具体的に示してください。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: コマンドプロンプトで数値抽出
外部コマンドが一部含まれるかもしれませんが、commandbeginner さんが書きました:>みけCATさん
はい、コマンドプロンプトのコマンドだけで実現したいです。
Cでは作りましたから。
無理でしょうか?
「バッチファイルを使用し、コマンドプロンプトでhelpコマンドを実行したときに表示されるコマンドだけでこの処理を行う」
ことを目標にしていいですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
-
commandbeginner
Re: コマンドプロンプトで数値抽出
>boxさん
すいません、使えそうなコマンドがなくて
全く組めてません、良いコマンドがあれば教えて頂きたいです。
コマンドの流れ的には、行が終わるまで変数sum(初期値0)に数値を加算
というような感じですね。
すいません、使えそうなコマンドがなくて
全く組めてません、良いコマンドがあれば教えて頂きたいです。
コマンドの流れ的には、行が終わるまで変数sum(初期値0)に数値を加算
というような感じですね。
Re: コマンドプロンプトで数値抽出
まあ、手元にあるはずのソースコードの提示がない限りは、commandbeginner さんが書きました:C言語でファイルを読み込み、1行ごとの数字だけを読み込み総和を求めるというプログラムは
作れた
話は先に進みそうもないですね。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: コマンドプロンプトで数値抽出
Linuxのシェルならexprなどがあるので計算できますが、それではなくて?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: コマンドプロンプトで数値抽出
あとWindowsならvbscriptやら、jscript、それと7以降標準のWindows PowerShellってもあります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: コマンドプロンプトで数値抽出
とりあえず、!=~以外の半角文字の中に入っている数値を抽出して足すことができました。
どうしたらこの3文字に対応できるか、もう少し効率のいい方法は無いかを調査しています。
どうしたらこの3文字に対応できるか、もう少し効率のいい方法は無いかを調査しています。
@echo off
setlocal ENABLEDELAYEDEXPANSION
set sum=0
for /F "delims=" %%i in (number.txt) do (
set num=%%i
set num=!num: =!
rem set num=!num:!=!
set num=!num:"=!
set num=!num:#=!
set num=!num:$=!
set num=!num:%%=!
set num=!num:^&=!
set num=!num:'=!
set num=!num:(=!
set num=!num:^)=!
set num=!num:**=!
set num=!num:+=!
set num=!num:,=!
set num=!num:-=!
set num=!num:.=!
set num=!num:/=!
set num=!num::=!
set num=!num:;=!
set num=!num:^<=!
rem set num=!num:==!
set num=!num:^>=!
set num=!num:?=!
set num=!num:@=!
set num=!num:A=!
set num=!num:B=!
set num=!num:C=!
set num=!num:D=!
set num=!num:E=!
set num=!num:F=!
set num=!num:G=!
set num=!num:H=!
set num=!num:I=!
set num=!num:J=!
set num=!num:K=!
set num=!num:L=!
set num=!num:M=!
set num=!num:N=!
set num=!num:O=!
set num=!num:P=!
set num=!num:Q=!
set num=!num:R=!
set num=!num:S=!
set num=!num:T=!
set num=!num:U=!
set num=!num:V=!
set num=!num:W=!
set num=!num:X=!
set num=!num:Y=!
set num=!num:Z=!
set num=!num:[=!
set num=!num:\=!
set num=!num:]=!
set num=!num:^^=!
set num=!num:_=!
set num=!num:`=!
set num=!num:a=!
set num=!num:b=!
set num=!num:c=!
set num=!num:d=!
set num=!num:e=!
set num=!num:f=!
set num=!num:g=!
set num=!num:h=!
set num=!num:i=!
set num=!num:j=!
set num=!num:k=!
set num=!num:l=!
set num=!num:m=!
set num=!num:n=!
set num=!num:o=!
set num=!num:p=!
set num=!num:q=!
set num=!num:r=!
set num=!num:s=!
set num=!num:t=!
set num=!num:u=!
set num=!num:v=!
set num=!num:w=!
set num=!num:x=!
set num=!num:y=!
set num=!num:z=!
set num=!num:{=!
set num=!num:^|=!
set num=!num:}=!
rem set num=!num:~=!
set /A sum=sum+num
)
echo !sum!
オフトピック
フォーラムルール違反ならごめんなさい。
とりあえずコマンドプロンプト単体でも不可能ではないかもしれないことを示す目的で投稿しました。
とりあえずコマンドプロンプト単体でも不可能ではないかもしれないことを示す目的で投稿しました。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: コマンドプロンプトで数値抽出
みけCAT さん、ご苦労さまです。
出来るような気はしてましたが、これは作るのが面倒ですね。非効率過ぎて泣けてきました。
出来るような気はしてましたが、これは作るのが面倒ですね。非効率過ぎて泣けてきました。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
commandbeginner
Re: コマンドプロンプトで数値抽出
コマンドは意外と大変なことを知りました。コマンドプロンプトは複合的な処理や細かい処理は苦手なのかなと
思いました。ありがとうございました。
思いました。ありがとうございました。
Re: コマンドプロンプトで数値抽出
試してみたところ、forコマンドでファイルを読み込む段階でいくつかの文字が消えているようで、みけCAT さんが書きました:!=~以外の半角文字の中に入っている数値を抽出して足すことができました。
その中に上記の3文字も含まれているため、ファイルに上記の3文字が含まれていても動作するようです。
(Windows Vistaで確認)
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)