電子書籍の厳選無料作品が豊富!

win 2000 xp vista を使用します。
コマンドプロンプトで下記の処理を行いたいのですが、どのようにコマンドを打てばよいのでしょうか?

ファイル .\test の内容は以下のとおりです。

test1
30
50
12
test2
60
12
01
test3
***
20
***

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(1)例えば "test2"という文字列を含む行と、合わせて下3行を拾って表示させたい時は、どのようにコマンドを打てばよいのですか?

test2
60
12
01
のように表示させたい。

(2)あらかじめ、とりだしたい情報がn行目にあるとわかっている時に、
取り出したい行を複数指定して表示させるにはどのようにコマンドを打てばよいですか?

(3)とりだした行の中に =***となる部分があれば
echo TEST NG!!
を実行したい。
なければ
echo TEST OK
を表示したい。

A 回答 (1件)

(1) Windows移植版のgrepを探してきて( 例えば

http://gnuwin32.sourceforge.net/ )
http://oshiete1.goo.ne.jp/qa5810772.html
を参考に
grep -B 3 test2 test

(2) Windows移植版のtail,head,sedを探してきて(以下同文)

(3) コマンドの終了コードは変数%ERRORLEVEL%に入るので
とりだした中に***が含まれるかを判定するコマンド(例えばgrep)を実行して、その直後の%ERRORLEVEL%で分岐すればよい

SET MSG="NG!!"
grep -B 3 test2 test | grep -qe "\*\*\*"
IF %ERRORLEVEL%==0 SET MSG="OK"
echo %MSG%

コマンドプロンプト(と標準のコマンド)だけでは、ちょっと大変です。
やるとすれば、 wscript/cscript用のスクリプトを書いて、となるでしょうか。

この回答への補足

ありがとうございます!

http://gnuwin32.sourceforge.net/
お~こんな、便利なものがあるんですね~

今回grepだけ落としましたが、
全てのunixコマンドをwin上で利用可能ということでしょうか?!

補足日時:2010/04/09 05:32
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!