1

いくつかの単語を含むファイル File1.txt があります。別のファイル (blacklistwords.txt という名前) があり、blacklistwords.txt に含まれるすべての単語を元の file1.txt から削除する必要があります。

File1.txt
----------
return  25
murder  28
another  54
stackoverflow  12
response  16
violence  32


blacklistwords.txt
------------------
violence
murder
crime

出力は次のようになります。

Final output:
-------------
return  25
another  54
stackoverflow  12
response  16
4

3 に答える 3

0

あなたの解決策は基本的に正しいです。

大文字と小文字を区別しないマッチングを要求しなかったことに注意してください。-iスイッチを介して追加すると、少なくともユニコード環境ではパフォーマンスが大幅に低下するため、必要ない場合は削除することをお勧めします。

于 2013-10-30T23:49:18.953 に答える
0

私自身のケースで user965692 のソリューションを分解しているときに、-w単語全体のみを検索する別のオプションが必要であることがわかりました。

完全に分解するには:

  • -i大文字と小文字を区別しないようにgrepに指示します
  • -F固定文字列のリストを期待するようにgrepに指示します
  • -w単語全体を検索します (つまり、「flow」がストップワードの場合、「overflow」には一致しません)
  • -v一致を反転します (つまり、文字列のリストにないものだけを出力します
  • -f blacklistwords.txt指定されたファイルの行からパターンを取得します

したがって、ブラックリストに登録されたすべての単語を削除するには:

grep -i -F -w -v -f blacklistwords.txt file1.txt

于 2015-11-10T18:45:27.813 に答える