• ベストアンサー

UNIXコマンドのパターンマッチング(grep)について

*または?(ワイルドカード)のマッチングはできないでしょうか? 例)12345*AB*678 先頭、後部でのマッチングは↓で可能でしたがここで行き詰ってしまいました。 ^grep "12345*" file名 | grep -e "*678" UNIXコマンドを使ってのよい方法があったらご教授ください。 どうぞ宜しくお願いいたします。

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

  • ベストアンサー
  • talepanda
  • ベストアンサー率58% (45/77)
回答No.1

grep -e "12345.*AB.*678" 正規表現を使いましょう。

ruru-kei
質問者

お礼

早急のご返事ありがとうございます。 思っていた通りに出来ました! ずっと悩んでいたのでとても助かりました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.3

"5*"は0個以上の"5"の繰り返しにマッチします。 "*"で始まることはありません。 正規表現のルール上の意味を持つ文字を文字として扱うには必ず直前に\(かなキーボードでない場合はバックスラッシュ)をつける必要があります。

ruru-kei
質問者

お礼

回答ありがとうございました。 grepの*の扱いを勘違いしておりました・・・ ご教授のお陰で*の扱いがわかりました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

多分, パターンに \* があれば * にマッチするはず. もちろんパターンを書くときに "..." でくくるならこの \* の \ もエスケープしなきゃならんので \\* という形になる.

ruru-kei
質問者

お礼

回答ありがとうございました。 grepの*の扱いを勘違いしておりました・・・ ご教授のお陰で*の扱いがわかりました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • unixのコマンドで+を付けたい

    unixのたとえば、 grep "#E200#" file1|cut -d# -f1 とかで 43 78 23 17 とかの数字を出してきて、これを 43+78+23+17 になるように+をつけるには どんなコマンドがよろしいでしょうか? trを使ってなんかできませんでしょうか? これができたら、TOTAL=43+78+23+17でコマンド代入 にして bc scale=2 $TOTAL 161 quit したいのですが。 よろしくお教えください。(unix 超初心者です)

  • UNIXのコマンド

    こんにちは。 UNIXのコマンドに関してお聞きしたい事があります。 カンマ(;) パイプ(|) の使い方の違いについて教えてください。 2つともコマンドを連続で使えるようにするものだと思っているのですが。 例1) # cd /tmp ; pwd 例2) # more syslog.log | grep "error" 分かるか方いたら教えてください。

  • UNIXコマンド "grep" "find" の使い方教えて下さい。

    1)以下(1)、(2)を検索したいとします。  (1)"wrk_str"という文字列の記述があるファイル名  (2)tmp_file.c という名前のファイル名 2)ディレクトリ構成が以下になってるとします。  /home/users/複数のディレクトリが存在/複数のディレクトリが存在/複数のファイルが存在 3)/home/users/ 配下に検索したい文字列、ファイルがあるとした場合、どのように   探せばいいでしょうか?   /home/users/配下で得に条件なしでgrepすると、"Arg list too long"(量が多い?)の   メッセージが出て、検索できませんでした。 UNIXコマンドに詳しい方、宜しくお願いします。 それ以外にも、色々検索方法知っていたら教えて下さい!!

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

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

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

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

  • grepについて

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

  • linuxのgrepコマンドに関して

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

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

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

  • 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)の質問、疑問に回答していただけると嬉しいです。 よろしくお願いします。

  • UNIXで複数のログファイルからエラー文字を探す

    初歩的な質問で申し訳ないのですが、UNIXで複数のログファイルから エラー文字を探して、確認したい次第です。 探したい文字列:E0001 ログファイル:20110823.log 20110824.log 20110825.log等日付名のログファイルがたくさんあります。 grepコマンドを使うといいと思うのですが、ご教授いただけますでしょうか。