次のテキストファイルがあります。
Data1 AppFlows
Data2 AppFlows-1
もし私がするなら
grep '\bAppFlows\b' file
これらの2行を印刷します。これは私たちが-
境界を考慮していないようです。
私は周りを見回し、同様のものを見つけました。
grep -w 'AppFlows$' file
しかし、それは役に立ちませんでした。
正確に一致する文字を含む行を印刷し、次を出力するすべてのメソッド
Data1 AppFlows
答え1
問題は、これが-w
「単語全体を構成する一致を含む行のみを選択する」ということです。あなたの場合、-
実際には単語の境界と見なされます。つまり、AppFlows-1
包含はAppFlows
「完全な単語」と同じですAppFlows foo
。これでメソッド$
の後のスペースが失敗するため、AppFlows
GNUで試してみることができます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
答え2
私は次のことをしました
egrep "(^|[^-])\AppFlows\b([^-]|$)"
これを偶然見つけた人のために