コロンを追加すると、このgrepパターンが壊れるのはなぜですか?

コロンを追加すると、このgrepパターンが壊れるのはなぜですか?

を使用して検索しましたが、期待grepどおりに機能しませんでした。私のファイルには次の行があります。

blacklists/redirector/domains:needyoutube.com
lacklists/redirector/domains:openyoutube.com
blacklists/redirector/domains:proxy-youtube.com
blacklists/redirector/domains:proxytoyoutube.com
blacklists/redirector/domains:streamyoutube.com
blacklists/redirector/domains:unblockyoutube.com

私が実行したとき:

grep ':youtube.com'

結果はありません。以下はうまくいきます:

grep 'youtube.com'

コロン()を避ける方法は:?バックスラッシュ(grep '\:youtube.com')が機能しません。私はRHEL 5、grep(GNU grep)2.5.1を使います。

更新:grepしたい項目を忘れました。次の項目も存在します。

./blacklists/movies/domains:youtube.com
./blacklists/movies/domains:youtube.com.br

正確なドメイン名を含むフィールドのみを取得したいと思います。だからyoutube.comリンクのブラックリストを取得したいので、「:youtube.com」を使用します。

上記のリスト(youtube.com、youtube.com.br)からyoutube.comのみを取得する必要がありますが、何も得られません。

私は十分に明確に説明できませんでした。申し訳ありません。

答え1

グレブは素晴らしい仕事をしています。ファイルに「:youtube.com」という行が含まれていません。

これらすべての行を一致させるには、:次のものを使用できます。

grep ":.*youtube\.com"

修正する:

質問を更新したら、2番目の部分に答える必要があります。

上記のリスト(youtube.com、youtube.com.br)からyoutube.comのみを取得する必要がありますが、何も得られません。

あなたはgrep ':youtube.com'実際に必要なことをしました。それがあなたに役立つことができるルートオプションであれば-R

答え2

「ブラックリスト/リダイレクタ/ドメイン」は、実際にはファイル名であり、ファイルの内容の一部ではないようです。grep ':youtube.com'素晴らしい作品:

% cat test.txt
./blacklists/movies/domains:youtube.com
./blacklists/movies/domains:youtube.com.br
blacklists/redirector/domains:needyoutube.com
lacklists/redirector/domains:openyoutube.com
blacklists/redirector/domains:proxy-youtube.com
blacklists/redirector/domains:proxytoyoutube.com
blacklists/redirector/domains:streamyoutube.com
blacklists/redirector/domains:unblockyoutube.com
% grep ':youtube.com' test.txt
./blacklists/movies/domains:youtube.com
./blacklists/movies/domains:youtube.com.br

「youtube.com」で始まる行を繰り返し検索するには、次のようにします。grep -R '^youtube\.com' path/to/dir

答え3

他の人が指摘したように、コロン文字はgrep検索ファイルではなくgrepの出力にあります。 grepがファイル内の一致する行を見つけた場合、次のように表示されます。filename:line

現在遭遇している問題は、youtube.comは含まれているがProxyyoutube.comは含まれていないファイルを一致させることです。そうですか?

あなたの場合、探している文字列が行の先頭にあるように見えるので、次のことができます。

grep * "^youtube.com"

上矢印文字は行の先頭でのみ一致するため、「extrastuffhereyoutube.com」では一致を回避できます。

答え4

私は好む切る

echo '
blacklists/redirector/domains:needyoutube.com
lacklists/redirector/domains:openyoutube.com
blacklists/redirector/domains:proxy-youtube.com
blacklists/redirector/domains:proxytoyoutube.com
blacklists/redirector/domains:streamyoutube.com
blacklists/redirector/domains:unblockyoutube
./blacklists/movies/domains:youtube.com
./blacklists/movies/domains:youtube.com.br
'|cut -d: -f2

関連情報