- ベストアンサー
DOSバッチで外部ファイルの指定行を読み取る方法
- DOSバッチを使用して、外部ファイルの指定行の内容を読み取る方法について教えてください。
- ファイル内の最初の行を読み取る方法と最後の行を読み取る方法を知りたいです。
- DOSのHelpを調べても、パラメータの使い方がよくわからないため、ファイルの指定行を読み取る方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。前回も回答したM_Satoです。 前回と同じような内容になりますが…… 内部コマンドだけで処理せず、外部コマンドとしてsed.exeを導入すれば、テキスト・ファイルの処理に自由度が出てきます。 ●使用例 1)1行目を読み出す場合 c:\sed -ne "1p" c:\mylog.log > oneline.txt 2)5行目を読み出す場合 c:\sed -ne "5p" c:\mylog.log > oneline.txt 3)最後の行を読み出す場合 c:\sed -ne "$p" c:\mylog.log > oneline.txt ●sed のオプションの説明 -n ……標準出力を抑制する(sedは入力ファイルを1行ずつ読んで(編集後に)標準出力に吐き出します。このオプションをつけると、出力コマンドがある場合に限り出力します) -e ……うしろに記述されているコマンドを実行する。 -f ……うしろに記述されているファイルの内容をスクリプトとして実行する。 ●コマンドの説明 1p……1行目を出力する 5p……5行目を出力 $p……最後の行を出力する 行数はバッチファイルの引数%1で与えてもかまいません。 ●出力方法 いずれもoneline.txtに1行だけ出力しますから、あとは type oneline.txt として画面に出力してもいいし、 下記のようにいったん変数に取り込んでから出力してもいいでしょう。 set /p abc=<oneline.txt echo %abc% ●導入 sed.exeはストリームエディタというDOSのソフトで、下記からダウンロードして解凍したあと、sed.exeだけをc:\に置いてください。特にインストール作業は必要ありません。 http://www.vector.co.jp/soft/dos/util/se000880.html (sed.exeはさまざまな開発者によって発表されており、いろいろな版がありますが、上記のものが使いやすいと思います) なお、入力ファイル名は旧DOSの規則に従って半角換算で8文字以内+拡張子3文字以内にしてください。
補足
sed.exeの詳細な説明、ありがとうございます。 外部コマンドとして、こういうものがあることを、初めて知りました。感謝します。 しかしながら、DOSコマンドのFORは、まだ、使えると言う気がします。 小生が、理解できていないだけのことのように感じています。 目的を達成することよりは、むしろ、FORを使いこなせるようになりたい、と言うのが正直なところです。 宜しくお願いします。