@niftyレンタル掲示板

掲示板の使い方

Java版のGrep

  • そがや
  • 投稿者のメール
  • 投稿者のホームページ
  • 2015/10/20 00:57

日本語に対応できるgrepコマンドがほしかったため、Javaのプログラムを作成しました! びんたんにあるロトサマリーにも報告しました。現在のバージョン番号は、1.03です。

Java版のGrepは、自動的にWindowsのDIRコマンドを利用します。
-b-を指定した場合、DIRコマンドを利用しないで、fileName.txtに記載のファイルを検索します。
-kを指定した場合、標準入力によりパイプを構成できます。

【正規表現およびファイル名】少なくとも2個のパラメータが必要(-b-を指定した場合、fileName.txtが必要)
java Grep パラメータ0 パラメータ1 パラメータ2
パラメータ1:正規表現
パラメータ2:ファイル名(複数の場合、または、ワイルドカードを含む場合、引用符で囲んでください)
-b-を指定した場合、fileName.txtがあるため、パラメータ2は、不要です。
-kを指定した場合、標準入力を利用するため、パラメータ2は、不要です。

パラメータ0:-b-, -H, -k, -n, -r, -V
DIRコマンドを利用しないでfileName.txtに記載のファイルを検索するには、-b-
各行にファイル名を出力するには、-H
ファイルではなく標準入力から読み込むには、-k
まず行番号を出力して、次に行を出力するには、-n
ディレクトリおよびその下位ディレクトリを検索するには、-r
バージョンを表示するには、-V

【コマンドの例】
java Grep "[Gg].*[Aa]" file_name
java Grep "[Gg].*[Aa]" "Grep.bak Grep.java"
java Grep -b- "[Gg].*[Aa]"
java Grep -H "[Gg].*[Aa]" file_name
java Grep -k "[Gg].*[Aa]" < file_name
java Grep -n "[Gg].*[Aa]" file_name
java Grep -r "[Gg].*[Aa]" file_name
java Grep -V

【タグジャンプ】サクラエディタでファイルを開いて行にジャンプする
-H -nを指定した場合、ファイル名 行番号が出力されます。

java Grep -H -n "[Gg].*[Aa]" file_name > g.txt
サクラエディタでg.txtを開いて、行に移動して、F12を押してください。
サクラエディタは、ファイルを開いてその行にジャンプします。

【パイプ】2本以上のプログラムを縦棒( | )で連結
DIR /O:S | java Grep -k "[0-9][,][0-9]"
もう一つのコマンドが出力した内容を入力するには、-kを指定してください。パイプが構成されます。
このパイプは、1,000バイト以上のファイルを抽出します。
/O:Sのパラメータを付加したDIRコマンドにより昇順になります。

  • コメント

トラックバックURL : http://sogaya.orange.coocan.jp/bbs/trackback.php?id=58

タグ
【dir 】 【grep 】 【java 】 【タグジャンプ 】 【パイプ 】 【ファイル名 】 【下位ディレクトリ 】 【行番号 】 【日本語 】 【標準入力 】

コメント

    • 1.そがや
    • 投稿者のメール
    • 投稿者のホームページ
    • 2015/10/23 03:47

    "Java版のGrep"でみつかります! 現在のバージョン番号は、1.05です。

    【各行に正規表現が記載されたテキストファイル】pattern.txt
    -fを指定した場合、各行に正規表現が記載されたテキストファイルから正規表現を読み込みます。
    各正規表現を検索して、マッチした行を出力します。すなわち、AND検索ではなくOR検索になります。

    • 削除
    • コメント
    • 2.そがや
    • 投稿者のメール
    • 投稿者のホームページ
    • 2015/11/09 09:10

    >>1
    UTF-8にも対応できます! 現在のバージョン番号は、1.18です。-b-を指定した場合、DIRコマンドを利用しないで、fileName.txtに記載のファイルを検索します。fileName.txtの内容として、各ファイルに文字コードを設定できます。
    【fileName.txtの内容】例
    readme.txt
    readme_utf-8.txt<UTF-8
    C:\tori\index.html<UTF-8

    【コマンドの例】
    java Grep "p[. ][Jj]" file_name
    java Grep "p[. ][Jj]" "*.java"
    java Grep "p[. ][Jj]" "*.txt" > g.tmp
    java Grep "p[. ][Jj]" "Grep.bak Grep.java"
    java Grep -b- "p[. ][Jj]"
    java Grep -c "p[. ][Jj]" file_name
    java Grep -e "p[.][Bb]" -e "p[. ][Jj]" -n file_name
    java Grep -e "p[.][Bb]" "p[. ][Jj]" -n file_name
    java Grep -e "p[.][Bb]" "p[. ][Jj]" -e- file_name
    java Grep -f pattern.txt file_name
    java Grep -H "p[. ][Jj]" file_name
    java Grep -i "p[. ]j" file_name
    java Grep -j "p[. ][Jj]" file_name
    java Grep -k "p[. ][Jj]" < file_name
    DIR | java Grep -H "p[. ][Jj]" - "*.java"
    DIR | java Grep -H --label=DIR "p[. ][Jj]" - "*.java"
    java Grep -l "p[. ][Jj]" file_name
    java Grep -m3 "p[. ][Jj]" file_name
    java Grep -n "p[. ][Jj]" file_name
    java Grep -q "p[. ][Jj]" file_name
    java Grep -r "p[. ][Jj]" file_name
    java Grep -r -b10 "p[. ][Jj]" file_name
    java Grep -T -H -n -r "p[. ][Jj]" "*.java"
    java Grep -u "p[. ][Jj]" "*.java"
    java Grep -u -r "p[. ][Jj]" "/^.*\.java$/"
    java Grep -u -r "p[. ][Jj]" "/^.*\.java$/i"
    java Grep -S -T64 -H -n -r "p[. ][Jj]" "*.java" > file_name
    java Grep -q -V > g.txt
    java Grep -V

    • 削除
    • コメント
    • 3.そがや
    • 投稿者のメール
    • 投稿者のホームページ
    • 2015/11/09 09:11

    >>2
    パラメータ0:-, --label=, -b, -b-, -c, -e, -e-, -f, -H, -i, -j, -k, -l, -m, -n, -q, -r, -S, -T, -u, -V
    パイプ処理およびファイル検索を行うには、-
    標準入力として、stdinではないラベルを付与するには、--label=ラベル
    DIRコマンドを利用しないでfileName.txtに記載のファイルを検索するには、-b-
    DIRコマンドの待機時間を変更するには、-b倍率
    行ではなく、ファイル名および行数を出力するには、-c
    OR検索を行うために正規表現を追加するには、-e
    正規表現追加モードを終了するには、-e-
    各行にファイル名を出力するには、-H
    大文字小文字を区別しないでマッチさせるには、-i
    1行以上の正規表現からなるファイルから正規表現を読み込むには、-f
    fileName.txtを削除しないで時刻名ファイルとして放置するには、-j
    ファイルではなく標準入力から読み込むには、-k
    行ではなくファイル名を出力するには、-l(マイナスエル)
    行数が最大値に達したらファイルを閉じて、次のファイルを検索するには、-m行数
    まず行番号を出力して、次に行を出力するには、-n
    エラーメッセージを表示しないで終了するには、-q
    ディレクトリおよびその下位ディレクトリを検索するには、-r
    行番号をある桁に関して右詰めで出力するには、-T桁
    右詰めの場合、コロンではなく罫線で分離するには、-S
    DIRコマンドではなくlsコマンドを利用するには、-u
    バージョンを表示するには、-V

    • 削除
    • コメント
    • 4.そがや
    • 投稿者のメール
    • 投稿者のホームページ
    • 2015/11/29 15:51

    JDK 1.7でも構築できます。現在のバージョン番号は、1.25です。

    Grep Java Version 1.25
    2015-11-26

    Java版のGrepは、自動的にWindowsのDIRコマンドを利用します。
    -uを指定した場合、DIRコマンドではなくlsコマンドを利用します(注1)
    -b-を指定した場合、DIRコマンドを利用しないで、fileName.txtに記載のファイルを検索します。
    fileName.txtの内容として、各ファイルに文字コードを設定できます。
    -Kuを指定した場合、すべてのファイルにUTF-8を設定できます。
    -kを指定した場合、標準入力によりパイプを構成できます。GrepJava.pdfを参照してください。

    【文字コード】--encoding=
    --encoding=により文字コードを設定できます。
    Windowsの標準のコマンドプロンプトは、シフトJISが使用されます(MS932)
    利用者は、入力したいファイルの文字コードを設定できますが、Grepは、シフトJISの行を出力します。

    --encoding=ASCII
    --encoding=Cp1252
    --encoding=EUC-JP
    --encoding=EUC_JP
    --encoding=ISO-8859-1
    --encoding=ISO8859_1
    --encoding=MS932
    --encoding=Shift_JIS
    --encoding=SJIS
    --encoding=US-ASCII
    --encoding=UTF-8
    --encoding=UTF8

    • 削除
    • コメント
    • 5.そがや
    • 投稿者のメール
    • 投稿者のホームページ
    • 2015/12/09 00:37

    >>1
    -H, -n, -c, -lなどではなく行のみ出力する場合、周辺の行を出力できるように改良しました! 現在のバージョン番号は、1.26です。atndコマンドを添付しました。

    行数が最大値に達したらファイルを閉じて、次のファイルを検索するには、-m行数
    -A, -B, -Cは、たとえば、-m1と併用できます。

    【周辺の行を出力】atndコマンド
    ファイル名も行番号も出力しないで、行のみ出力する場合、たとえば、-A2, -B3, -C4を指定することで
    周辺の行を出力できます。さもなければ、atndコマンドを使用してください。
    添付のatnd.exeは、指定された位置およびその周辺の行を出力します。-LFで行数をカウントします。
    また、-LFでは、最長の行のバイト数を記録します。-VCでバージョンおよびメッセージが表示されます。
    第567行および前後の4行を出力するには、コマンドプロンプトに下記のコマンドを入力して、Enterを押してください。
    atnd -c4 -p567 file_name

    • 削除
    • コメント

タグ(キーワード)