Unixで複数の基準を満たす行を検索するには?

Unixで複数の基準を満たす行を検索するには?

単語/パターン「gene」と「+」の両方を含む行数を見つけたいです。 grepでこれを行うことはできますか?

ベストアンサー1

はい、次の方法でこれを実行できますgrep

grep -c 'gene.*+' file

その後、単語がgene最初に表示される行を見つけて別の単語(「単語の区切り」を意味)として見つけ、同じ行から別の単語にもインポート\bします。+この-cフラグは、grep印刷する一致する行数を示します。+前の項目も見つける必要がある場合は、gene次のことができます。

grep -Ec '(gene.*\+)|(\+.*gene)' file

しかし、これはEugene+Mary came for dinnerあなたが望むものではないかもしれないものと一致します。探している単語を見るとgff / gtfファイルを見ているようですので、もっと複雑な作業をして、gene3番目と+7番目のフィールドに存在しない行を探したいと思うかもしれません。各行は#(gffヘッダー)で始まります。これが実際に必要なものであれば、次のようにすることができます。

awk -F"\t" '!/^#/ && $3=="gene" && $7=="+"{c++}END{print c}'

おすすめ記事