ハイフンなどの特殊文字を無視し、文字列を正確に一致させます。

ハイフンなどの特殊文字を無視し、文字列を正確に一致させます。

次のテキストファイルがあります。

Data1 AppFlows
Data2 AppFlows-1

もし私がするなら

grep '\bAppFlows\b' file

これらの2行を印刷します。これは私たちが-境界を考慮していないようです。

私は周りを見回し、同様のものを見つけました。

grep -w 'AppFlows$' file

しかし、それは役に立ちませんでした。

正確に一致する文字を含む行を印刷し、次を出力するすべてのメソッド

Data1 AppFlows

ベストアンサー1

問題は、これが-w「単語全体を構成する一致を含む行のみを選択する」ということです。あなたの場合、-実際には単語の境界と見なされます。つまり、AppFlows-1包含はAppFlows「完全な単語」と同じですAppFlows foo。これでメソッド$の後のスペースが失敗するため、AppFlowsGNUで試してみることができますgrep

$ grep -wP 'AppFlows\w*$' file
Data1 AppFlows

完全な単語としてマークされている場合は、AppFlows行末までのゼロ個以上の空白文字が続きます。

別の方法は、2番目のフィールドを持つ行を見つけることですAppFlows

$ awk '$2=="AppFlows"' file
Data1 AppFlows

または、どのフィールドになるかを事前に知らない場合は、次を使用してください。

$ awk '{ k=0;for(i=1;i<=NF;i++){ if($i=="AppFlows"){k++}}}k' file
Data1 AppFlows

おすすめ記事