ベストアンサー Linuxで、正規表現を使って、アクセスログから 2010/07/16 15:02 Linuxで、正規表現を使って、アクセスログから a_id=12345 という文字列を含む行を抜き出し、別ファイルへ保存したいのですが、 どのようにコマンドを実行すれば、実現できるでしょうか? みんなの回答 (2) 専門家の回答 質問者が選んだベストアンサー ベストアンサー kupou ベストアンサー率100% (2/2) 2010/07/16 20:33 回答No.2 grep -E 'a_jd=[1-5]{5}' アクセスログ > 別ファイル 通報する ありがとう 0 広告を見て他の回答を表示する(1) その他の回答 (1) Tacosan ベストアンサー率23% (3656/15482) 2010/07/16 17:01 回答No.1 grep 通報する ありがとう 0 カテゴリ [技術者向] コンピューターOS(技術者向け)Linux系OS 関連するQ&A Linuxの正規表現について Linuxの正規表現について教えてください。 正規表現を使うと、文字列のパターンを表す事ができる。例えば、行頭が「#」で始まる行は____、aもしくはfで始まる三文字の文字列は____となる という問題なんですけど____の部分をだれか教えてください。明日テストなんだけどわからくて… お願いします。 正規表現について教えてください。 正規表現について教えてください。 JavaScriptでプログラミングを行っています。 その中で文字列に対しゼロサプレスを行いたいと思い 調べた結果、正規表現を使用する以下のコードで 実現可能なことが分かりました。 val.replace(/^0+([0-9]+.*)/, "$1") コードを記述し実行すると確かに可能なのですが 正規表現を調べてみても何故これでゼロサプレスが可能なのか よく理解できませんでした。 申し訳ありませんが初心者でも理解できるように説明して頂けないでしょうか。 宜しくお願いします。 linuxで正規表現を使ってファイルをコピーしようとしているのですが正 linuxで正規表現を使ってファイルをコピーしようとしているのですが正規表現の記述が間違っているためコピーできません. どこが間違っているのかまったく分かりません. ご教示よろしくお願いします. (コピーしたいファイルの数が少ないですが正規表現の勉強のため質問させていただきました. ) ========コピーしたいファイル群============ 0126-ad-g2.dat 0126-d-g2.dat ========================================== ========実行したコマンド================== cp [0-9]\{4\}-[a-z]\{1,2\}-g2\.dat ../g2/ ========================================== 正規表現にマッチした文字列の抽出 閲覧頂きありがとうございます。 Linuxのsedコマンドに該当するwindowsコマンドは存在しますでしょうか? 存在しない場合、batやマクロでの長い記述となってしまっても構いません。 検索で調べたところ、特定のdllを入れればsedを使用できるとあったのですが、その方法は取りたくありません。 100万行以上あるテキストファイル(一行=一レコード)の中から、正規表現とマッチする文字列の抽出作業です。 1行に1つ、不特定な場所にその文字列が存在するという形です。 その抽出した文字列を、別のテキストファイルへ吐き出す…といった処理を想定しています。 どうかご教示いただけると幸いです。 環境 windows7、EmEditor使用 正規表現でマッチさせたい文字列の指定方法 正規表現でマッチさせたい文字列の指定方法について こんにちは。正規表現について教えてください。 秀丸エディタでgrepする時に先頭行に 『ファイル名(行数): 』という文字列が 先頭行に入りますが、これを正規表現を使用して消したいと思っています。 具体的には以下のような表現ですが、どのように指定するのが正しいでしょうか。 いくらかテストしているのですが、なかなかうまくできず困っています。 消したい文字列 test.log-110411-01.bak.text(38): よろしくお願いします Apachのアクセスログを必要な箇所だけ抜き出すには Apachのアクセスログから、1時間分のログを抽出して 別ファイルに保存したいと思っています。 Linuxコマンドの grepを使えばできると思うのですが、 どのように指定すればできますでしょうか? 宜しくお願いいたします。 正規表現について教えてください。 正規表現について教えてください。 Oracleで開発を行っている者ですが、ネットや本で調べても わからない箇所がありましたので、ここに質問として挙げさせていただきます。 ご教示いただけると幸いです。 現在、下記のようなデータが入ったテーブルがあります。 ---------------------------------------------------------------------------------- ID | SENTENCE | REG_EXP ---------------------------------------------------------------------------------- 1 | <○○○:XXXX> | [^<][^:]+ ---------------------------------------------------------------------------------- 2 | <○○○:XXXX>→<△△△:XXXX> | ---------------------------------------------------------------------------------- 3 | ■■■■■<○○○:XXXX> | ---------------------------------------------------------------------------------- このテーブルを使って、アプリを作っているのですが、 期待動作としては、SENTENCEの列に入っている文字列を REG_EXPの列に入っているデータ(正規表現のパターン)で マッチした文字列を切り取るようにしたいのです。 例えば、IDが1の場合は○○○が切り取られるのが期待動作です。 (注.この動作は、REGEXP_SUBSTR関数を用いてSQLで実行します。) お聞きしたいのは、IDが2の場合は△△△を、IDが3の場合は○○○を、 配列の最初の要素に入れるには、正規表現をどのように記載すればよいのか、ということです。 ○、△、■、Xの部分は英数字、日本語のどれが入るのかはわかりませんが、 <や→、:などの全角記号のフォーマットはこのままになります。。 IDが2の正規表現は[^<:→]+[^<:→]+[^<:→]+ で試してみたのですが、 うまく出来ませんでした・・・。 テーブルの線の調整がうまくできず、 表が見づらくて申し訳ありませんが、 正規表現に詳しい方、ご教示をよろしくお願いいたします。 LinuxのAccessログはどこにあるんでしょうか? お世話になります。 現在、WindowsとLinuxをイントラネットでつないでて、Sambaを利用してWIndowsからLinuxにアクセスしようとしています。 Windowsからサーバの存在が確認できるところまではいくのですが、それをクリックしてみると、"\\<サーバ名>にアクセスできません。 ~"と表示されてしまいます。 このとき、Linuxのアクセスログを確認したいのですが、/var/logのどのファイルを見ても更新日付が古いので、別の場所にあるのでは?と 思っているのですが、ご存知のかたいないでしょうか? 正規表現にマッチする文字列の一括出力 任意の正規表現を与えてやり、そのパターンに合致する文字列を 1行1文字列でテキストファイルに一括出力したいと考えています。 例えば、 [a-z][a-z][a-z] を与えてやると、 aaa aab aac aad ... ... zzx zzy zzz と、26の3乗で17576行の文字列をテキストファイルなどに出力。 LINUXのコマンドラインなら多少分かるのですが、プログラミングは さっぱりで、上記の目的につかえそうなユーティリティも探してみた のですが、見つけることはできませんでした。 よい方法がありましたら、ご教授よろしくお願いいたします。 正規表現について たくさんあるhtmlファイル内に特定の条件に該当するファイルを探したい場合の正規表現で、 <title>から</title>の間に「.jpg」や「%」といった特定の文字列を含んだ行を検索したいのですが、どのように書いたら良いでしょうか? お手数ですが、よろしくお願い致します。 コマンド 文字列検索 正規表現について すみませんどなたか教えて下さい。 ある処理が失敗するとエラーのlogファイルを出力します。 エラーがないと0バイトのファイルが作成されます。 そのファイルが0バイトの場合、次の処理を実行させるbatファイルを作成中です。 ファイルサイズの取得ができればいいのですが、コマンドで見つけ切れませんでした。 そこで、logファイルをfindftr /cで1文字でもあれば、、、で判断するようにしました。 正規表現を使って試しましたが、文字があってもヒットしません。 どなたかアドバイスをお願いします。 findstr /c:".*" d:\a.txt >nul 2>&1 if errorlevel 1 ( remエラーlogファイルに文字列なし ) else ( rem エラーlogファイルに文字列あり ) テキストエディッタによる正規表現 EmEditorで正規表現を行っております。 検索してもサンプルが見当たらなかったので、 どなたかご教授いただけるとたすかります。 ・1行目~13行目まで文字列関係なく正規表現 ※1行目から指定行までの ・1行目の空白を削除(先頭文字ではなく何も書かれてない1行目の行を削除したいです) よろしくお願いいたします。 バッチファイルで正規表現を使った置換 あるテキストファイルにID = 'ME000987654'といった文字列が複数存在します。バッチファイルでME000987654を別の値に置き換えたいのですがやり方が分かりません。 このIDはいつも同じではないので、ID = '.*' のような正規表現を使ってマッチさせてそれをID = '新しいID'のように置き換えようと思うのですがこれはバッチファイルで可能でしょうか。 正規表現で置換するための記述 正規表現について質問です。 テキストファイル内の文字列に対して、URL以外の「&」を「&」に置換したいのですが、 普通に置換してしまうと、URL内の「&」も全角になってしまうため、 正規表現で回避しようと考えています。 この場合、正規表現はどのように記述すればよいか、教えていただけると大変助かります。 ---------------------------------------------------------------------- (成功例) ガチャピン&ムック http://hogehoge.jp/index.html?k=2011&id=0414 ↓↓↓↓↓↓ ガチャピン&ムック http://hogehoge.jp/index.html?k=2011&id=0414 ---------------------------------------------------------------------- また、正規表現を使わなくてもできるなど、別の提案もOKです。 質問に不備があれば、その旨ご指摘お願いいたします。 正規表現勉強中のため、何卒よろしくお願いいたします。 ''で囲まれていない文字列にマッチする正規表現 下記のような文字列($str)に対して置換を行い、 my $str = qq{ AAA = BBB - 'CCC' }; $str =~ s/★正規表現★/sprintf("DDD(%s)",$1)/xmsge ; 変換後 $str = DDD(AAA) = DDD(BBB) - 'CCC' ; を実現する★正規表現★を書きたいと思っています。 ・AAA,BBB,CCCは[\w]で構成される文字列です。 ですが、シングルクォーテーション('')で囲まれていない文字列にマッチする正規表現が書けなく困っています。 一度、シングルクォーテーションで囲まれているものも含めて全てDDD()をつけて、そのあとで、シングルクォーテーションを含むものは元に戻すことでやりたいことは実現できているのですが、1行で実現できる方法を探しています。 アドバイスよろしくお願いします。 正規表現の使い方 仕事で悩んでいます。 私の仕事はログファイルから、月々何件アクセスしたか調べる仕事です。 コマンドプロンプトでsort、grep、wcなど色々使い方を勉強していくうち、 今度は難しいのが出てきて悩んでいます。 そのまま書き移したら、皆さんは分からないし、会社のプライバシーに関わるので、簡単に書きます。 例えば、 ABC10 ABC10 ZP-22 AB-V5 AA10 PP122 と数字があり、 頭文字のAの部分を集めたいところに私は grep -e "資料番号の頭文字" 入力ファイル > 出力ファイル とコマンドプロンプトで打ち、下記の通りになりました。 AB-V5 AA10 AB-V5 AA10 だが、問題は途中にあるAB-V5は仲間ではないので、 それを省きたいのです。 上記の例は数少ないので手入力でもできますが、実際は1万以上もあるので、 手入力はできません。 上司に聞いたところ、 A[0-9].* の正規表現を使えと言われましたが、 全くやり方わかりません。 正規表現について勉強したのですが、全く理解ができず、仕事が遅れています。 皆さんの知恵を借りたいと思います。 よろしくお願いします。 indexと正規表現はどちらが早い? 1行につき40文字前後で(固定長ではない)、1ファイルにつき約1億行書かれたファイル(1ファイルにつき3-5GB程度のテキストファイル)が30ファイルあります。ファイルは、すべてアルファベットで構成されていていますが、スペースは含まれておらず、各行の末端は改行(\n)で区切られています。これらのファイルからある特定の文字に完全にマッチする部分が含まれる行が各ファイルごとに何行あるのかを調べたいと思っています。検索する文字列の長さは10-20文字のものをいろいろと調べたいと思っています。 この作業をperlで行う場合、index関数を使って検索をするのと、正規表現を使って検索をするのでは、どちらが早いのでしょうか?もしくは、他に良い方法やmoduleがあるようでしたら教えてください。 よろしくお願いします。 正規表現についてお教え下さい 正規表現についてお教え下さい。 )以外の全ての文字列(改行・Tab・空白等含む)の1回以上の繰返しという記述は正規表現ではどのような記述になるでしょうか? NoEditorで下記のような条件でgrepしようとしたのですがうまくいきません。 [[^[^\)]] \t\n\r\f]+ 具体的には下記のような5行があった場合、以下のような条件で1、2、3行目を抽出できるということを想定しています。 条件:AAA )以外の全ての文字列の1回以上の繰返し \) ※現状の条件の記述はAAA[[^[^\)]] \t\n\r\f]+\) 1行目 AAAあ(aaa) 2行目 AAA あ(aaa) 3行目 AAA あ 4行目 (aaa) 5行目 AAA) 正規表現について /^R|ruby$/ 上記のような正規表現があったとします。 この正規表現の【|】の判断がわかりません。具体的には、/^ $/という記述から 対象の文字列の先頭がRかrのどちらかで以降がubyと続く文字列にマッチという 意味だと解釈しているのですが違うのでしょうか? 具体的にはRubyという文字列かrubyという文字列の二つのうちどちらかにしか マッチしないとおもっていたのですが、 rrubyという文字列やRrubyという文字列にもマッチします。そもそもこの場合のR|rの箇所ですが、これはRかrのどちらかが先頭にあり 二文字目からはubyという文字列がつづきますよ。という正規表現ではないのでしょうか? かなりこまっています。 識者のかたご教授ください。 正規表現で置換 正規表現の初心者です。 テキストエディタを使って、「@:」で始まる以外の行の先頭に「//」を挿入してコメントアウトしたいのですが、正規表現がうまく書けません。 検索対象: ^[^(@:)] 置換文字列: // でいいのかなと思ったのですが、[]の中ではグルーピング用の()も文字として認識されてしまうのですね。 どのように書いたら正しく置換されるでしょうか。 どうかご教示ください。