タグ付けされた質問 「grep」

grepは、ファイル内のテキストパターンを検索するためのコマンドラインツールです。

2
キーワードgrep検索後にのみファイル名を表示するにはどうすればよいですか?
現在、各ファイルに最大1行の非常に長いデータがあるディレクトリにn個のデータファイルがあります。私のディレクトリ構造は director/ data1.json data2.json data3.json これらのファイルの少なくとも1つに探しているキーワードが含まれていることは知っていますが、1行のデータが長すぎるため、端末全体をカバーしています。キーワードgrepを実行した後にのみファイル名を取得するにはどうすればよいですか?私が使用しているgrepコマンドは次のとおりです。 grep keyword *.json
15 grep 

1
リテラル文字列のAck検索[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新することがありますので、話題のサーバー障害のため。 7年前に閉鎖されました。 htmlタグの一部を検索したいときに物事をエスケープしなければならないのはうんざりです。 エスケープせずに、入力した内容を正確に検索するにはどうすればよいですか? 例えば ack-grep 'console.log(foo' 私は得る: Unmatched ( in regex; marked by <-- HERE in m/console.log( <-- HERE par/
15 grep  regex 

5
.gzログファイルの処理
どこかに抽出する必要なく、.gzログファイルの束を簡単にgrepできる魔法のシェルパイピングがありますか? .gzファイルは、ログローテーションの結果であるApacheログです。特定のURIが過去にアクセスされた頻度をすばやく確認したいと思います。


3
FedoraとUbuntuでgrepの動作が異なる
したがって、Fedoraでこれを実行すると、次のように表示されます。 $ ls hmm_data/indivA12_AATAAG/refs/par1/ 2R-orths.alleles 2R-ref.alleles $ ls hmm_data/indivA12_AATAAG/refs/par1/ | grep -F '-ref.alleles' 2R-ref.alleles しかし、Ubuntu(同じデータ)で実行すると、grepから結果が得られません。 $ ls hmm_data/indivA12_AATAAG/refs/par1/ 2R-orths.alleles 2R-ref.alleles $ ls hmm_data/indivA12_AATAAG/refs/par1/ | grep -F '-ref.alleles' 何が起こっているのでしょうか?両方のシステムで同じように動作するものを思い付くにはどうすればよいですか?
13 ubuntu  bash  fedora  grep 

7
行全体を必要とせず、正規表現からの一致のみ
正規表現から一致を取得するだけです。 $ cat myfile.txt | SOMETHING_HERE "/(\w).+/" 出力は、括弧内で一致したもののみである必要があります。 行全体に一致するため、grepを使用できるとは思わないでください。 これを行う方法を教えてください。
13 bash  shell  grep  regex 

6
マッチ後の最後までのgrep行
私はからの出力を以下しているgit status私はどのように、grep後にすべてのためにUntracked files: [alexus@wcmisdlin02 Test]$ git status # On branch master # # Initial commit # # Changes to be committed: # (use "git rm --cached <file>..." to unstage) # # new file: app/.gitignore # new file: app/app.iml # new file: app/build.gradle # new file: app/proguard-rules.pro # new file: app/src/androidTest/java/org/alexus/test/ApplicationTest.java …

5
syslogログファイルからの時間範囲の高速抽出?
標準のsyslog形式のログファイルがあります。1秒あたり数百行を除いて、次のようになります。 Jan 11 07:48:46 blahblahblah... Jan 11 07:49:00 blahblahblah... Jan 11 07:50:13 blahblahblah... Jan 11 07:51:22 blahblahblah... Jan 11 07:58:04 blahblahblah... 正確に真夜中にロールバックするわけではありませんが、2日を超えることはありません。 多くの場合、このファイルからタイムスライスを抽出する必要があります。このための汎用スクリプトを作成して、次のように呼び出すことができます。 $ timegrep 22:30-02:00 /logs/something.log ... 22:30から、真夜中の境界を越えて、翌日の午前2時まで線を引き出します。 いくつかの注意事項があります。 コマンドラインで日付だけを入力する必要はなく、時刻だけを入力する必要があります。プログラムはそれらを理解するのに十分スマートでなければなりません。 ログの日付形式には年が含まれていないため、現在の年に基づいて推測する必要がありますが、それでも元旦には正しいことを行います。 私はそれが高速であることを望んでいます-ファイル内を探索し、バイナリ検索を使用するために行が存在するという事実を使用する必要があります。 これを書くのに多くの時間を費やす前に、それはすでに存在しますか?
12 linux  log-files  grep 


8
宛先を指定して、LINUXでデフォルトゲートウェイを取得するにはどうすればよいですか?
宛先0.0.0.0を使用して、デフォルトゲートウェイを取得しようとしています 次のコマンドを使用しました:netstat -rn | grep 0.0.0.0 そしてこのリストを返します: Destination - Gateway - Genmask - Flags - MSS - Window - irtt - Iface 10.9.9.17 - 0.0.0.0 - 255.255.255.255 - UH - 0 0 0 - tun0 133.88.0.0 - 0.0.0.0 - 255.255.0.0 - U - 0 0 0 - eth0 0.0.0.0 - …
11 gateway  grep 

6
pv(パイプビューア)を使用したGrepプログレスバー
コンピューターに巨大なディレクトリがあり、内部のすべてのルビファイルで文字列を検索する必要があります。 私はこのようにそれをすることができた:grep -R "string" *.rbしかしそれは本当に時間がかかり、進行状況を監視できるように進行状況バーを表示するためにpv(パイプビューア)を使用したいと思いgrepます。 しかし、このコマンドについて理解できないことがまだあるので、このコマンドをどのように書くことができるのか本当にわかりません。 誰かが何か考えを持っていますか?
11 grep  pv 

2
プログラムでsudoersファイルにsecure_pathを追加する方法
私は、githubからノードとnpmを構築し、サービスを開始するEC2インスタンスのユーザーデータスクリプトを構築しようとしています。これらのホイールにグリースを塗布するには、以下を追加する必要があります。 :/usr/local/bin / etc / sudoersの次の行の終わりまで: Defaults secure_path=" /superuser/927512/how-to-set-path-for-sudo-commandsはvisudoを使用してこれを実現する方法について説明していますが、EC2ユーザーデータ内でプログラム的に実行したいと考えています。 /programming/16282789/adding-sudo-permissions-to-sudoers-for-user-via-shell-scriptはsudoersファイルの編集について話しますが、私がやろうとしていることに対してひどく焼きすぎているようです達成する。 行をgrepして置き換えるのは簡単だと思いましたが、困惑しました。迷惑な閉じ逆コンマだけではありません!
11 linux  grep 

2
CIDR範囲のグレッピング
ときどき、ApacheログファイルからCIDR範囲をgrepしたいと思います。これは、自然境界(/ 8、/ 16、/ 24)に該当する範囲では簡単ですが、/ 17や/ 25などの他の範囲では簡単ではありません。 例: # 192.168.0.0/16: (easy) grep " 192\.168\." access_log # 192.168.128.0/17: (more thought required) grep -E " 192\.168\.(12[89]|1[3-9][0-9]|2[0-5][0-9])\." access_log # 192.168.0.0/17: (more thought required) grep -E " 192\.168\.([0-9]|[0-9][0-9]|1[01][0-9]|12[0-7])\." access_log # 192.168.128.0/18: (straining my brain) grep -E " 192\.168\.(1[2-8][0-9]|19[01])\." access_log これらの正規表現は、などの先行ゼロを含むIPアドレスを無視します192.168.001.001。これは、Apacheログファイルには問題ではありませんが、他のログファイルにある可能性があります。特にプリンターは先行ゼロを好むようです。オプションのゼロを正規表現に追加するのは簡単ですが、全体を少し難しくするだけです。より簡単な方法が必要です。 CIDR範囲に一致するファイルから行を選択する簡単な方法はありますか? ファンシーな正規表現拡張機能は、さまざまなツール(必要に応じて、awkまたはperl必要に応じて1行にしたいなど)と同様に、作業を容易にするものと見なされます。理想的には、私が望むのは次のようなものです grep "[:CIDR 192.168.128.0/18:]" …
10 ip  regex  grep  cidr 

5
複数のUNIXコマンドを1つの出力に結合する
メールログで特定のメールアドレスを検索する必要があります。maillogという名前の現在のファイルと1週間分の.bz2ファイルを同じフォルダーに保存します。現在、次のコマンドを実行してファイルを検索しています。 grep person@domain.com maillog bzgrep person@domain.com *.bz2 コマンドgrepとbzgrepコマンドを1つの出力に組み合わせる方法はありますか?そうすれば、結合した結果を単一の電子メールまたは単一のファイルにパイプすることができます。
9 linux  unix  bash  grep 

4
ack-grepを使用したリテラル「> \」の検索
文字通りより大きい文字(a ">")にスペース、バックスラッシュ文字(a "\")が続く行、つまり次の行を探しています:> \ エスケープすることでこれが可能になると思っていました。 $ ack-grep "\>" ">"を含む行を返します。 しかし、バックスラッシュをエスケープしようとすると、次のようになります。 $ ack-grep "\> \\" ack-grep:無効な正規表現 '\> \': 末尾の\正規表現m / \> /
9 grep  regex  escaping 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.