2017-11-27 4 views
0

私はいくつかの混乱の結果を得た - ここhackerrank におけるAは、リンクです: https://www.hackerrank.com/contests/unix-text-processing-2017/challenges/text-processing-in-linux-the-grep-command-4/hackerrank 'Grepの' -A problemsolve

grep -i -w -e 'the' -e 'that' -e 'then' -e 'those' 

は、質問に対する正しい答えです。

私の最初の試みは

grep -i -E 'the|that|then|those' 

だったが、第2のテストケースでは間違っている、それらの間の違いは何ですか?なぜ私の最初のコードが間違っていますか?

+0

あなたはそのサイトで質問しましたか?正解に関する特定の規則があるかもしれません。 – Taegost

+0

読者があなたの問題の説明を閲覧するためにリモートサイトに行くことを期待しないでください。正確なコードとエラーメッセージをQにコピー&ペーストし、編集ボックスの左上にあるメニューの{}ツールを使用して、コード/データ/エラーを簡単に検索して読めるようにフォーマットする必要があります。 https://stackoverflow.com/help/on-topic、https://stackoverflow.com/help/how-to-ask、https://stackoverflow.com/help/dont-askおよびhttps://をお読みください。ここにQを投稿する前に、stackoverflow.com/help/mcveをご覧ください。がんばろう。 – shellter

+1

私のためのそのページ404s。 –

答えて

2

-wフラグはその違いであり、重要なものです。このフラグが設定されていなければ、 "テーマ"はパターン "the"と一致し、フラグはそれが設定されていません。フラグは完全な単語に一致するためです。

-wを2番目のコマンドに追加すると、最初のコマンドと同等になります。

このような詳細に注意することが重要です。 1文字ごとに重要なことがあり、すべてのコマンドライン引数は確かに非常に重要です。この例では、man grepに簡単に説明があります。

ところで、-wフラグを使用せずに別の等価溶液:\<は が効果的に一つのマッチング、「単語の開始」、 及び「単語の末尾」を意味するため

grep -i -E '\<(the|that|then|those)\>' 

これは、目と同じ効果を有しています(...)内の完全な単語のうち、|で区切られています。