• 締切済み

grepで40~70の数字をリストアップするコマンドを教えてください。

grepで40~70の数字をリストアップするコマンドを教えてください。 1 2 3 4 5 ・ ・ ・ のように1~100まで改行して数字が書かれているテキストファイルがあります。 40 41 42 ・ ・ ・ 70 という様にgrepコマンドなどで40~70までを数字をリストアップするコマンドはないでしょうか?

みんなの回答

  • entree
  • ベストアンサー率55% (405/735)
回答No.3

grep '^\([4-6][0-9]\|70\)$' もし、sed を使う場合はこんな書き方もあります。 sed -ne '/^40$/,/^70$/p' (40にマッチしたところから70にマッチしたところまでを出力)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

数として考えず、文字として考えたら、 40~70は「4から6までの文字のあとに0から9までの文字」であるか「7のあとに0」であるか、です。 これを、grep流の正規表現であらわせば [4-6][0-9]\|70 実際のコマンドラインでは、特殊文字をシェルで解釈しないようにシングルクォートとで括って grep '[4-6][0-9]\|70' です。 ただし、これはご質問にあったテキストファイル以外では正解ではないでしょう。 例えば、200までのテキストだったら、140とかにもマッチします

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

数字しかかかれていないなら、検索パターンに ([4-6][0-9]|70) と指定してやれば大丈夫じゃないかと……

関連するQ&A

  • リナックスの grepコマンド ¥数字 

    リナックスを勉強しているのですが、grepのコマンド \数字  の意味と使い方がよくわかりません。 ネットで検索してみたのですが、あまり詳しい例もなく、いまいち理解できません。 わかりやすい例をつかって説明していただけないでしょうか。 よろしくお願いします。

  • 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のgrepコマンドに関して

    linuxのgrepコマンドに関して ファイルの中から、1や2という文字が単独で存在する行を検索したくて grep 1 file名 とするのですが、そうすると11や23など文字が単独ではなく、含まれている行が出力されます。 含まれる、ではなく文字そのものを検索するにはどうしたらよいでしょうか?

  • grepコマンドの使い方

    下記のようなファイルがあるとします。 カレントディレクトリ /home から"hello"という文字列が含まれるテキストを grepしたい場合、コマンドはどのようにすればいいのでしょうか? 色々な方法があると思いますが、よろしくお願いします。 ---------------------------------------------------------------------- /home/hoge1/foo1.txt foo2.exe foo3.txt /home/hoge2/hogehoge2/foo4.txt foo5.exe /home/hoge3/hogehogehoge3/foo6.txt foo7.exe foo8.zip ----------------------------------------------------------------------

  • grepについて

    Freebsdにおいてgrepというコマンドがあると思いますが、このgrepで特定の階層にある特定のファイルを探すことはできるのでしょうか? あるファイルの中に存在する、特定の文字などを検索するやり方は分かるのですがファイル名を検索しようとしても、やり方が分からずできません。 それとも、もともとgrepコマンドは、あるファイル内に存在する文字を検索するためのコマンドなのでしょうか?? その辺りも、よく分かりません。 他に、grepはこういう時に便利!!みたいな例があれば教えてくださいませ。 ご回答の程、よろしくお願い致します。

  • grepコマンドのAオプションが使えない

    たすけてください! grep -A 10 検索条件 検索ファイル とコマンドを打つと grep:認識できないフラグ:A と出てきます。 どうしたら使えますか?

  • Windows2000のコマンドプロンプトで使えるgrep

    Windows2000のコマンドプロンプトで使えるgrepを探しています。どなたかご存知ありませんか? よろしくお願いします。 (batファイル内にgrepを記述して連続処理させたいのですが。。)

  • WindowsXPでgrepして置換えがしたい。

    OS:Windows XP dosコマンドなどで、grepして置き換えがしたいです。 dirA | +dirA1 || |+dirA11 ||| ||+file1.text || |+file1.text || |+file3.text | +dirA2  |  +file1.text  |  +file2.text dirA以下のfile1.textに対し、文字列"abc"を"def"に置き換える。 と dirA以下の*.textに対し、文字列"あああ"を"いいい"に置き換える。 を1アクションでやりたいです。 第一希望  dosコマンド(バッチファイル)など最初からXPに入っているもので出来るのがベストです。 第二希望  秀丸エディタにgrepして置換の機能がありますが、これをどうにか登録して使う方法があればそれでも可。 第三希望  何かしらフリーのソフトをダウンロードして実現する。 以上、よろしくお願いします。

  • grepコマンドでの文字列検索

    grepコマンドについて質問です。 grepコマンドでCSVファイルを参照し、ある項目に特定の文字列でないものがあれば、そのファイル名を取得する処理をしたいと思っています。 つまり、ある項目を$strとすると $str <> 'aaaaaa' という処理をgrepで行おうと考えています。 現状では、 grep -l '^[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,[^(aaaaaa)]' ファイル名 等を試していますが、[^(aaaaaa)]だと一文字目しか判別できていないようです。[^a{6}]などもうまくいきません。 何かいい方法があれば教えて頂きたいと思います。 宜しくお願いします。

  • grepコマンド

    質問させてください。 ファイルから指定した文字列を含まない行を別ファイルに 書き込もうとしています。 gunzip -c tmp.gz | grep -i -v '.txt' > work.txt 上記の場合、tmp.gzを解凍したファイルの行に大文字・小文字関係のない ".txt(Txt, tXt, TxT, ・・・"の文字列を含まない行を  work.txtに書き込んでいます。 これはうまくいったのですが、判定文字列を複数にすると 『ファイルを見つけようとしてエラーがでました』となります。 ちなみにコマンドは gunzip -c tmp.gz | grep -i -v '.txt' -i -v '.log' -i -v '.pdf'> work.txt 複数の大文字小文字を区別しない指定された文字列を含まない行を 別ファイルに書き込むにはどのようにすればいいのでしょうか? すみません、あまり経験がないのでお許しください。 よろしくお願いいたします。