• ベストアンサー

ロングファイルネームが使用できるGREP,SEDご存知ないですか?

MS-DOS上で、UNIXのGREP,SEDコマンドを使用したいと思い、フリーソフトを探していますが、機能的には問題なくても、ロングファイルネームを使用できるものがなく、困っています。 ロングファイルネームが使用できるものをご存知の方おられましたら、URLを教えてください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • terra5
  • ベストアンサー率34% (574/1662)
回答No.5

>今回の場合、プログラム内で使用するということですので、 >WINDOWS用のアプリは残念ですが >使えません。 誤解されてませんか? cygwinなんかと同じWindowsというOSで動く、 Windows用のコンソールアプリケーションです。 GUIのアプリケーションではありません。 cygwinがOKならこちらもOKだと思いますが。 cygwinもMS-DOSでは動きませんし。 それと、cygwinですが改行コードとか文字コードとか関係ありませんか?

masakazu180
質問者

お礼

申し訳ありません。 勘違いしていました。 やってみると、問題なく動きました。 ありがとうございます。

その他の回答 (4)

  • togino
  • ベストアンサー率75% (97/129)
回答No.4

Cygwin の setup.exe を起動させて、現在インストール されている grep のバージョンを確認したつもりでした。 ただ、私のところにある grep.exe のサイズも 85504 バイトですので、おそらく同じものであると 思われます。 「-f オプションをつけたらうまく動かない」 という症状をもう少し詳しく教えてもらえないでしょうか? エラー内容とか、こうなるはずなのにこうなるとか

  • togino
  • ベストアンサー率75% (97/129)
回答No.3

cygwin の grep で 「-f オプションがうまく働かない」との事ですけど 僕の環境では動いているので、そちらの詳しい環境を 教えていただけますか? WindowsXP Pro SP1 Cygwin 1.15.xxx grep のバージョン 2.5-1 # cat pattern.txt a*b # cat data.txt a b ab ba # cat data.txt | grep -f pattern.txt b ab ba のような感じですけど・・・

masakazu180
質問者

補足

何度も申し訳ありません。 WINDOWS XP PRO SP1 Cygwin 1.5.7 grepのバージョンってどうやって調べるのですか? 上記のCygwin導入時にフルインストールしています サイズは85504バイトでした。 ファイル指定でなければうまくいくんですが。。

  • terra5
  • ベストアンサー率34% (574/1662)
回答No.2

純粋なMS-DOSのFATはロングファイルネームに対応してませんので、MS-DOS用のソフトを使う限りは無理でしょう。 Windows95以降のVFATで使える機能です。 コマンドプロンプトという意味なら、あると思いますが、上記の理由でMS-DOS用ってことで探すと見つからないでしょう。 grepはみつけました。 grep win32 http://www.vector.co.jp/soft/dl/win95/util/se015011.html 私もcygwin使ってます。

参考URL:
http://www.vector.co.jp/soft/dl/win95/util/se015011.html
masakazu180
質問者

お礼

ありがとうございます。 今回の場合、プログラム内で使用するということですので、 WINDOWS用のアプリは残念ですが 使えません。 またよろしくお願い致します。

  • togino
  • ベストアンサー率75% (97/129)
回答No.1

僕は cygwin を入れて、その中の grep, sed を 利用していますけど・・・ これじゃ、駄目ですかね・・・?

masakazu180
質問者

補足

お忙しいところありがとうございます。 cygwin のgrepは使えそうなのですが、 -f オプション(ファイル内に検索対象文字が書いてある場合)がうまく動きません。 ご存知でしたら使い方教えてください。

関連するQ&A

  • grep,sedコマンドについて

    昨日に引き続き、またまた質問です。 昨日回答してくださった方、ありがとうございました。 その後自分でも色々勉強しまして、ファイルの中身を処理するにはgrepコマンドとsedコマンドが 有効である事が分かりました。 今回やりたいことは以下のファイルの数字と時間の部分(//のついている2行)の削除です //1 //00:00:03,600 --> 00:00:07,195 xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx //2 //00:00:07,360 --> 00:00:09,635 xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx     ・     ・ (実際のファイルには"//"はついていません) 理想の出力 xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx (xxxxxの部分には英語の台詞が入ります) で、以下が自分が考えた方法です 1.sedコマンドのみで削除 $ sed "/[0-9]*\n[0-9][0-9].*/d" ファイル名 結果 ファイルの内容がすべて表示されるだけ (a) 2.grepコマンドで抽出しパイプ処理 まずgrepで削除部分を抽出 $ grep -P "^[0-9]*\n[0-9][0-9].*" ファイル名 結果 1    00:00:03,600 --> 00:00:07,195    2    00:00:07,360 --> 00:00:09,635         ・         ・    10    11         ・         ・ となり、1~9までの数字と時間はちゃんと表示され 10以降は数字しか出ません。 (b) また -P の部分を -E にすると、何も表示されません (c) (perlの正規表現と拡張正規表現の違いはここでは無いように思えますが・・・) 2は最初でつまづいたのでどのコマンドに渡して行を削除するかはまだ分かりません (d) 削除の際、2行まとめて行うのは、一行ずつ行うと、台詞の部分に数字のみが入っていた場合 削除されるのを防ぐためです 以上長くなりましたが(a)~(d)の質問、疑問に回答していただけると嬉しいです。 よろしくお願いします。

  • linux(UNIX) の grep で、あるディレクトリ以下を再帰的に見て、全ての *.html ファイルに grep をかける方法

    linux(UNIX) の grep で、あるディレクトリ以下を再帰的に見て、全ての *.html ファイルに grep をかける方法を教えてください。 簡単な事なのかもしれませんが、コマンドから打つ場合、どのようにすればよいか、分かりません。 Windows の秀丸のgrepなら簡単に出来るのですが。。。 どなたか教えてくださいませ。。。

  • sedコマンドを使用して、文字の置換を行いのですが助けてください。

    sedコマンドを使用して、文字の置換を行いのですが助けてください。 sedコマンドやawkコマンドなどを使って、aliasesファイルの置換を行いたいのですが、 うまくいかないので教えていただけないでしょうか? 知りたいのは、次のような置換を一括で行うことのできるコマンドです。 ■置換前のファイル ================= AAAA:  :include:/file/name BBBB:  :include:/file/name CCCC:  :include:/file/name ================= ■置換後のファイル(希望する置換結果) ※1フィールド目の任意の文字列をメールアドレスのローカルパートとして利用したい ================= AAAA:  AAAA@example.com BBBB:  BBBB@example.com CCCC:  CCCC@example.com ================= 以上です。

  • Macで読めるロングファイルネームのCD-Rを焼きたい。

    B's Recorder GOLDを使っています。 ROMEOやJULIETで焼いたロングファイルネームのファイルの 入ったCD-RをMacに読ませてみたところ、どちらも 8.3ファイルネームでしか開けませんでした。 以前、Macのライティングソフトを使っていたのですが、 このソフトの場合、MacでもWindowsでもロングファイルネームで 読めるCD-Rを焼くことが出来ました。 このようなフォーマットのCD-Rが焼けるWindows用のソフトは ないでしょうか?

  • SJISファイルを日本語でgrep

    UNIX環境で、 SJISファイルを日本語でgrepしたのですが、 ファイル名が出力されずにうまくいきません。 どなたかご教授願えないでしょうか。 [自分のコマンド] find ./ -type f -print | xargs nkf -e | grep 'テスト' とし、日本語は検地できたのですが、 ファイル名が出力されずに困っております。 grep -l としたら、↓のエラーが表示されました。 xargs: nkf: シグナル 13 によって終了しました サブディレクトリも含めて検地したいのですが、 なにかいい方法ありますでしょうか。

  • MacでWinのロングネームファイルを開くためのソフトって?

    MacOS8.5でWinのロングネームファイルを開くように出来るソフトがあると聞いたのですが何処で入手できるか教えてください。

    • ベストアンサー
    • Mac
  • 圧縮ファイルのgrepソフト

    階層的に複数圧縮されたファイル内の文字列を解凍せずにgrepするソフトを探しています。 現在、圧縮ファイルの閲覧ソフトとして、Explzhを使っています。これはこれで解凍せずに閲覧できて便利なのですが、ファイル内の文字検索する機能がありません。(と思って使っています) grepソフトとしては秀丸を使っていますが、これは圧縮ファイル内のgrepには対応していません。(と思っています) そこで、階層的に複数圧縮されたファイルを下位階層まで含めて全て全文文字検索かけてくれて結果を表示、選択すれば当該ファイルの当該文字位置にジャンプ表示するようなソフトを探しています。 どなたか良いソフトをご存じであれば教えて下さい。 基本フリーウェアを探していますが、情報としてはシェアウェアも含めて情報頂けると助かります。 場合によっては購入も考えますので。(金額次第ですが。。。)

  • ファイルの冒頭からXバイトだけを切り出すソフト(long file name対応)を探しています

    ちなみに、UNIXや、嘗てDOSの世界では、Head.exeなる小回りきくtoolがありました。それをNetで探してダウンロードして使用したら、古いだけあって、long file nameに対応していませんでした。 使用対象ファイルは、実はbinaryなので、冒頭からX行でなく、Xバイト と指定できるソフトウエアだと嬉しいです。また、実は、対象ファイルも大きく、50MBぐらいありますのでそういうサイズにも、対応しているものが見つかると嬉しいです。 windows2000pro, thinkpadです。どうぞよろしくお願いします。

  • sedでファイルで条件指定の場合

    スクリプト初心者です。 sedコマンドを使用して文字列の置換をおこないたいのですが、条件がたくさんあるため、 条件部分をシェルのファイルと別ファイルにして実行したいです。 その際、シェル実行時の引数を条件ファイルに入れたいのですが、通常の文字列扱いになってしまい困っています。 アドバイスをお願いいたします。 ・test.sh  find $1 -type f | xargs sed -i -f mypattern.sed ・mypattern.sed  s|${1}aaa|/bbb|g test.sh hoge と実行した場合 "hogeaaa" を "bbb" に置換したいです。

  • grepでの抽出箇所のみ置換して上書き

    例えば find ./ -name file_name -exec grep -B 2 "earth" {} \; -print | grep "moon" というコマンドを実施し、出力が planetkind moon だったとします。 このfile_nameファイルの一部にある 『 planetkind moon』 という箇所を 『 planetkind taiyo』 に変更したいのですが、 find ./ -name file_name -exec grep -B 2 "earth" {} \; -print | grep "moon" | xargs sed -i "s/moon/taiyo/" とすると、ファイル中の全てのmoonがtaiyoになってしましまいます。 このgrepでの抽出箇所のみ置換して元ファイルを上書きする方法は有りますか? 以上、宜しくお願いいたします。

専門家に質問してみよう