2017-07-18 5 views
0

事前定義された外部ソースファイルソース内の特定のキーワード(または組み合わせ)を検索するには、BASHスクリプトアプローチを見つける必要があります。キーワードはCLIプロンプトに入力する必要があり、結果はすべてファイル名でGROUPED BYと表示されます。定義済みの外部ソースファイルソース内の特定のキーワードのBASH検索

例:

/home/user/file2.txt 
/home/user/dir/file2.txt 

#cat /home/user/file2.txt 
the RED foX 

#cat /home/user/dir/file2.txt 
FOX jUmped Over 

#./search.sh 
#Enter word: fox 
Results: 
    /home/user/file2.txt 
    /home/user/dir/file2.txt 

このための最善のアプローチはどのようになるか: 2ファイルのレコードが含まれている「ソース」ファイルがありますか?唯一の単語全体

  • -F一致させるために力パターン:印刷のみ含むファイルの名前は
  • -wと一致します。

  • 答えて

    2

    • -lは、詳細はgrep --helpまたはman grepman find参照パターンがあります改行で区切られた文字列のセット
    • -i:大文字と小文字の区別を無視します。

    #!/bin/bash 
    
    printf "%s" "Enter word: " 
    
    read keyword 
    
    find /home/user -type f -exec grep -lwFi "$keyword" {} + 
    
    +0

    ありがとう、Nahuel。ただし、このソリューションではファイルのみが表示されますが、ファイルからのキーボードの行は表示されません。 – faceless

    +0

    'grep'オプションを参照してください。特別な '_'文字も' -F'オプションも固定文字列マッチ(特殊文字なし)を有効にしません。そうでなければ(-Fなし)grepは正規表現 ' '。*'は任意の文字にマッチし、 '。*'は文字の任意のシーケンスにマッチします。 –

    +0

    @Nahuelに感謝します。私の質問に正しい演算子が見つかりました。私が持っている唯一の追加の質問は、どのように私は出力で 'キーワード'を色付けることができますか? – faceless

    関連する問題