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

grepは、正規表現に一致する(または一致しない)行の入力を検索し、その結果を出力するUnixコマンドラインユーティリティです。このタグは、grep機能の使用方法、grepで機能する正規表現の作成方法、および一般的な使用法についての質問に使用します。Unixライクな環境(Windows上のCygwinなど)でgrepが利用できるようになったため、互換性に関する質問やバージョンとソフトウェア環境の違いについてもこのタグを使用できます。


6
ファイル内の文字列を検索するより良い方法は?
ハードドライブのどこかのファイルで特定のテキスト文字列を見つけようとしています。これまでに思いついた最高のものは: find -type f / | xargs cat | grep "string to find" しかし、これは文字列がどこかに存在するかどうかを教えてくれます。 見つけたファイルを知るにはどうすればよいですか? もっと良い方法はありますか?

2
grepコマンドを使用して2列目から検​​索を開始する方法
次のような文字列を含むファイルがあります。 site1.com,Level1.2 site2.com,Level1.1,Level1.0,Level1.2 site3.com,Level1.2 site4.com,Level1.2,Level1.1,Level1.0,Levelv3 siteLevel1.2,Levelv2 Level1.2,Levelv2 grep単語の検索に使用したい。私はこのコマンドを使用しました: grep -w "Level1.2" file1.txt > result.txt 出力は次のとおりです。 site1.com,Level1.2 site2.com,Level1.1,Level1.0,Level1.2 site3.com,Level1.2 site4.com,Level1.2,Level1.1,Level1.0,Levelv3 Level1.2,Levelv2 しかし、最初の列を無視するにはgrepが必要です。出力には次のものが必要です。 site1.com,Level1.2 site2.com,Level1.1,Level1.0,Level1.2 site3.com,Level1.2 site4.com,Level1.2,Level1.1,Level1.0,Levelv3 できるだけ自分の命令で私を助けてください。私は新しいコマンドや検索方法を好みません。私は、2列目から検​​索する必要があるだけで満足しています。

1
`grep`でいくつかの基準を持つ単語を見つけます(スクラブル用)
「sowpods.txt」という名前のダウンロードしたスクラブル単語リストを使用grepしていますが、これらの基準を持つすべての単語を検索しようとしています。 7文字の単語 同じ文字で始まり、終わる 同じ2番目、4番目、6番目の文字がある 3番目と5番目の文字が異なる これまでのライン grep -i "^(.).*\1$" sowpods.txt > output.txt バックリファレンスエラーが発生するため、オンラインガイドを使用してみましたが、非常に混乱していました。これも可能ですか?もしそうなら誰かが助けてくれますか? 私はMacで、デフォルトのターミナルを使用しています。

1
呼び出された場所へのVIM変更パス
vimの作業ディレクトリを現在作業中のファイルに変更するのが本当に好きです。このために私は私のvimrcで使用します: autocmd BufEnter * if bufname("") !~ "^\[A-Za-z0-9\]*://" | lcd %:p:h | endif 私が気に入っているのはgF、vimで(*)を使用して、カーソルの下のファイルを新しいバッファーで開くことです。 ただし、この組み合わせは、私の好みのワークフローで問題を引き起こします。 プロジェクト内のすべての「foo」を検索したいので、シェルを使用cdしてフォルダーに移動しpath/to/project/src、実行しますgrep -Ern 'foo' * | vim -。引数のために、vimで開かれる出力は次のとおりです。 a/file1.c:42: foo b/file2.c:13: foo ここで、ヒットを調べたいfile1ので、そこにgF飛び込みます。このアクションにより、作業ディレクトリが変更されますpath/to/project/src/a 私はの出力を持つタブに戻る場合はgrep、作業ディレクトリにとどまるpath/to/project/src/aので、%:p:h明らかに標準入力から読み込み、何かのためにパスを解決することはできません。 問題:相対パスが間違っているため、file2viaにジャンプできなくgFなりました。 vimの作業ディレクトリを、バッファに切り替えたときに呼び出された場所に自動的に変更するとよいでしょう。この例では、これは、grepバッファに切り替えるときに作業ディレクトリがになることを意味しますpath/to/project/src。 これを達成する方法についてのアイデアに感謝します。 (*)完全開示:spf-13 vimを使用しますが、基本的な問題はvim全般に適用されるはずです。
vim  grep 

1
複数のコマンドを単一のgrepにパイプする
複数のコマンドの出力を単一のgrepにパイプしたいです。 例: これら2行を組み合わせたいと思います。 smartctl -A /dev/sda | grep -e Reallocated_Event_Count -e Current_Pending_Sector smartctl -A /dev/sdb | grep -e Reallocated_Event_Count -e Current_Pending_Sector (これらの2行の唯一の違いは、ディスクが異なることに注意してください:sdaとsdb) どんな助けも大歓迎です、 ありがとう
grep  pipe 

3
内容が別のファイルと一致する場合、 `tail -f file`の出力行の前に追加
次のすべてをタイトルに詰め込もうとするのは大変だったので、これが私が本当に言っていることです。 私がやっているtail -F access.logリアルタイムでのApache2ログを監視します。各行の最初のものは、IPアドレスとそれに続くスペースです。また、各行がIPアドレス、コンマ、名前である不変のCSVファイルもあります。例えば: 10.1.2.33,John Smith 10.1.2.190,Jane Doe 成果物:以前と同じようにアクセスログを追跡したいのですが、CSVに現在のログファイルの行の先頭と同じIPアドレスを持つ行が含まれている場合は、行の先頭に人の名前を挿入します。 たとえば、次のような行: 10.1.2.33 - - [22/Aug/2013:13:41:24 +0000] "GET /index.php ... 代わりに次のようにレンダリングする必要があります。 John Smith 10.1.2.33 - - [22/Aug/2013:13:41:24 +0000] "GET /index.php ... 理想的には、いくつかの正規表現コマンドを一緒にパイプすることでこれを完全に行いたいと思います。これまでのところ、私の最大の問題は、grepがstdinのパターンを受け入れず、stdinのサブジェクトを予期することです(何かが欠落していない限り)。また、必要に応じてCSVをより適切な形式に変換するのに問題はありません。ありがとう。

1
行内のパターンを見つけ、一致したパターンを同じ行に追加します
私はcsvにリストされているメモからジョブ番号を引き出して、できればsed、awk、grepまたはperl(Cygwinにインストールしたもの)を使用して、その番号を行末に追加しようとしています。 モックアップは次のとおりです。 "HD1231203", "1231232","fake.name","Lots of text before the job 150232 and then more" "HD5164635", "8918123","more.fake","151243 and then some text" "HD1541545", "8435413","last.fake","Oh look, we've got 150213 and 151487 this time!" になるはずです: "HD1231203", "1231232","fake.name","Lots of text before the job 150232 and then more", "150232" "HD5164635", "8918123","more.fake","151243 and then some text","151243" "HD1541545", "8435413","last.fake","Oh …

1
シェルスクリプト:同じ名前のフォルダーが存在しない場合にファイルを削除する
一連のフォルダーと一連の*.DATファイルがあります。同じ名前(なし)のフォルダーが存在しない場合 、*.DATファイルを削除します.DAT。 このソリューションに到達するまでに時間がかかりました。 find . -type d > dirs.txt for F in `find *.DAT` do F=$(sed 's|\.DAT||g' <<< $F) if grep "$F" dirs.txt; then echo "$F found" else rm $F.DAT fi done しかし、はるかに簡単な解決策があるはずだと思います(エレガントなワンライナー?ファイルを作成せずに...?)。私は正しいですか?
shell  grep  sed 


1
grepを非コメント行に制限する
Perlのソースファイルbin/exim|SendEmail|Unformattedで、コメント行(#前に空白で始まる行)を除く行を見つける必要があります。 FreeBSD grepコマンドのいくつかの呼び出しのパイプラインでそれを行う方法を知っています。grepパイプラインではなく1つだけで実行できますか?
regex  grep  egrep 

2
エスケープされた一重引用符がgrepで機能しないのはなぜですか?
私は文字列を一致させようとしています: * * * * * /usr/local/bin/growlnotify -t 'helloTitle' -m 'helloMessage' -n 'myApp' -sw で: crontab -l | grep '^[^#].*/usr/local/bin/growlnotify.*\-n \'myApp\'.*$' 動作しません:一致するものはありません。 しかし: crontab -l | grep '^[^#].*/usr/local/bin/growlnotify.*\-n.*$' 非常に良い動作: * * * * * /usr/local/bin/growlnotify -t 'helloTitle' -m 'helloMessage' -n 'myApp' -sw 問題は\'myApp\'何ですか? grep / sedで一重引用符をエスケープする方法は?
regex  grep  sed 

1
パターンに一致するファイルを表示しないためにgrepを使用しますか?
パターンと一致しないすべてのものを除外するために、パイプでgrepを使用することに非常に精通しています。しかし、grepを使用して、パターンに一致するすべてのものを除外できますか?私はこれがうまくいくと思った、 -v 以下のようなオプション: / media -name "somenamehere"を見つけます| grep -v "許可が拒否されました" しかし、これは機能していません。なぜそうではなく、私が代わりに何をすべきか考えていますか?
linux  bash  grep 

2
フォルダーとそのサブフォルダー内にあるすべてのファイルでテキスト文字列を検索するにはどうすればよいですか?
grep検索を使用して、Macのデスクトップに保存されたフォルダー(およびそのサブフォルダー)内の任意/すべてのphpファイルで文字列 'base64'を検索したいと思います。ターミナルのコマンドライン機能の使用経験はあまりありません。私は書いた grep -lr base64 *.php しかし、これはフォルダー内の関連するphpファイルのみを検索し、そのサブフォルダーは検索しません。私が探しているすべてのPHPファイルを表示する正しいコマンドは何ですか?

1
grep、sed、またはawkを使用してファイルから行を抽出しますか?
openLDAP認証から他の認証方法に移行したい。私の主な問題は、私が手動でそれらを移行する必要があるsudoersです。 したがって、そのためのスクリプトを作成する必要があります。これにはbashを使いたいのですが。 ldifファイルには、次のような行が含まれています。 dn: cn=Devs, ou=SUDOers, dc=example,dc=com sudoUser: %devs sudoCommand: /bin/su - command sudoCommand: /bin/su - wwwadmin sudoHost: ALL description: Developer Admin objectClass: sudoRole cn: Devs だから、私がする必要があるのです: LDIFファイルを読みます。 dn:とcn:Devsを含む行の間の空白行ORの間のすべての行を抽出します。 組み込みのBASHコマンド、grep、awk、sedなどだけを使いたいのですが。 Python、PHP、Perlなどはありません
-1 linux  command-line  bash  grep  sed 

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