grepを使用してファイルから一致する行のみを取得しようとしています。たとえば、次の式を使用すると問題が発生します。
grep -w AFFX-KIT-000088 textfile
次を返します。
AFFX-KIT-000088-A
AFFX-KIT-000088
しかし、私はAFFX-KIT-000088式と正確に一致するものだけが欲しいです。私は-F -Eを試して引用しました。行を特定する必要があるテキストファイルは非常に大きく、変更できません。つまり、処理に時間がかかるため、多くの手順を含まない答えが必要であるという意味でもあります。
ノート:
ファイルは実際にはかなり大きく、列が多いです(grepで使用した列だけでなく)。
ベストアンサー1
grep -x 'AFFX-KIT-000088' file
力-x
の一致十分ワイヤー。
-F
正規表現の代わりに文字列を一致させるときに追加することもできます。これにより作業速度が速くなります。
このオプションは「単語文字」ではない-w
ため、ここでは機能しません。-
したがって、AFFX-KIT-000088
inの部分文字列AFFX-KIT-000088-A
は完全な単語です。
[[:alnum:]_]
「単語文字」は、英数字と下線が一致する文字です。
複数列データのタブ区切りフィールドが列3で一致すると仮定します。
awk -F '\t' '$3 == "AFFX-KIT-000088"' file
つまり、3番目のフィールドを特定の文字列と比較します。
これらの条件に関連するジョブがない場合、デフォルトのジョブは、条件が満たされた場合に入力レコード全体を印刷することです。本物。フィールドのデータのみを印刷したい場合:
awk -F '\t' '$3 == "AFFX-KIT-000088" { print $3 }' file