grepを使用しているのと同じ方法でawkで検索語句を強調表示できますか?次のファイルAwk - カラーマルチラインパターン(grepなど)?
>gene
AAATTTGCAGAGATTACAGGGGGGG
太字が着色テキストでここgrepコマンド$ grep --color=auto GATTACA file.txt
が
AAATTTGCAGAGATTACAGGGGGGG
を作り出す考える
。
私が実際に使用しているファイルは、複数の行にまたがるパターンを持つため、grepではなくawkを使用しています。だからではなく、ファイルには、次のようになります。
> gene
AAATTTGCAGAGAT
TACAGGGGGGG
と私は私の句
gene
AAATTTGCAGAGATTACAGGGGGGG
を返す
awk 'BEGIN{RS=">"; FS="\n";}/GATTACA/{print$0}' file.txt
でレコードを印刷するには、次のawkのコードを使用することができますが、私は私をしたいと思いますパターンは色です(grep cmdのように):
gene
AAATTTGCAGAGATTACAGGGGGGG
私はまだUNIXとawkの新機能であるので、どんな助力もあれば幸いです。この質問は、How to print awk's results with different colors for different fields?の重複ではありません。この質問は、フィールド全体ではなく、の検索語であるの色を付けることを求めている点で異なります。技術的に私は全体のフィールド{print$0}
を印刷しているので、返された結果全体が色を変えます。
awk 'BEGIN{RS=">"; FS="\n";}/GATTACA/{print "\033[0;32m"$0"\033[0m"}' file.txt
戻り
gene
AAATTTGCAGAGATTACAGGGGGGG
また、私はこれを試してみました:
awk: (FILENAME=nametest.txt FNR=1) fatal: division by zero attempted
私はちょうど組み込むするかどうかはわかりません。ただ、エラーを返す
awk 'BEGIN{RS=">"; FS="\n";}"\033[0;32m"/GATTACA/"\033[0m"{print$0}' file.txt
カラーコードを検索語にのみ入力します。私のawkコードを完全に再フォーマットする必要があるかもしれません。私にお知らせください!再度、感謝します!
そのスレッドから試されたソリューションですが、検索語だけを強調表示できませんでした。代わりに、フィールド全体が色付けされています。おそらく、複数行の検索を行い、フィールド全体を '{print $ 0}'で返す必要があります。どのようにそれを回避するか分からない。ありがとう! – moxed
検索用語のみを色付けするには、次のような色コードを持つgsubを使用できます。 'BEGIN {RS ="> "; FS = "\ n"; gene = "GATTACA"} ' ' $ 0〜gene {gsub(gene、 "033 [0; 32m&\ 033 [0m"、$ 0); print $ 0} ' ここで'& 'は見つかったものです(GATTACA)。 –