したがって、任意のテキストを含むテキストファイルがあり、ファイル内のすべての単語を一覧表示する必要がありますが、不用語ファイルに共通するすべての単語をフィルタリングする必要があります。これを達成するためにどのコマンドを使用できますか?
ベストアンサー1
「単語」がスペースで囲まれた文字列であると仮定すると、すべてのスペースを改行に変更し、結果を並べ替え、重複項目を削除できます。次に、そのリストから停止単語を削除します。
tr -s '[:space:]' '[\n*]' <textfile |
sort -fu |
grep -v -Fix -f stopwords
このtr
コマンドは、スペースに似たすべての文字を改行に変更し、複数の連続した改行を1つに圧縮します。次に、リストを1行に1単語ずつ並べ替え、重複する単語を削除します(大文字と小文字を無視-f
)。
'[:space:][:punct:]'
最初の引数として、tr
テキストをスペースに似た文字と句読点で単語に分割するか、明示的な文字リストを使用して試すこともできます' ,.!?'
。
次に、ソートされた一意の単語のリストをstopwords
(1行に不用な単語が1つずつある行を含むファイル、持っているファイルに変更)の単語と比較し、一致しない単語をそのリストに保持します。
-F
ユーティリティがgrep
パターンを次のように処理するように強制します。ひも正規表現ではなく、この-i
オプションを使用すると、大文字と小文字を区別しない一致が使用されます。この-x
オプションを使用すると、(サブストリングの一致ではなく)完全行一致のみを許可できます。この-v
オプションは一般的な一致の意味を反転させるので、次の行はいいえ一致する項目は保持され、指定されたファイルからパターンを読み取ります-f
。grep