ローカル修正

ローカル修正

おおまかにこれを使ってテキストから不用語を削除しています。 パスワード

私は以下を持っています

$ cat file
file
types
extensions

$ cat stopwords
i
file
types

grep -vwFf stopwords file

私は結果を期待しています: extensions

でもわかる(合わないと思う)

file
extensions

これは、file不用語ファイルからその単語をスキップしたのと同じです。今、素晴らしい点は次のとおりです。i最初の行の単一の単語/文字を、を除く別のASCII文字に変更して不用語ファイルをf変更iするlと、e同じgrepコマンドが異なり、正しい結果が得られますextensions

どうなりますか?どうすれば解決できますか?

Mac OSX GNU bashバージョン4.4.12(1)でgrep(BSD grep)2.5.1-FreeBSDを使用しています。

ベストアンサー1

bsdgrepこれは、まだスキャンする必要がある現在の行の一部を追跡する変数に関連するバグでした。この部分は、複数のパターンが含まれる場合、正規表現マッチングエンジンへの連続呼び出しで上書きされます。

ローカル修正

-wこの変数を使用して正しく機能するため、失敗するオプションを使用せずに、単語の先頭と末尾に一致する正規表現拡張子を使用してstopwordsファイルを次のように作成して、この問題をある程度解決できます。

\<私\>
\<ファイル\>
\<タイプ\>

また、この回避策を使用するには、このオプションを使用しないでください-F

ご注意ください、録音された正規表現コンポーネント[[:<:]][[:>:]]マニュアルでre_format言う内容いいえここで働いてください。これは、正規表現ライブラリがbsdgrepGNU正規表現互換性サポートを有効にしてコンパイルされるためです。これは修正されたと報告された別のバグです。

サービス修理

そのバグは今年初めに修正されました。修正はまだFreeBSDのSTABLEまたはRELEASEリリースに含まれていませんが、現在存在することが報告されています。

grepFreeBSD派生バージョンのMacOSに含めるには、bsdgrepAppleにお問い合わせください。 ☺

追加読書

おすすめ記事