Grepコマンドの結果をファイルに保存する必要がありますが、出力ファイルをフォーマットして、端末の場合と同じように色を保持する必要もあります。
それを行う方法はありますか? grepをある種のマークアップ言語に保存するのでしょうか?それが不可能な場合、このタスクを達成できる別のツールはありますか?
ターミナルとまったく同じように、出力ファイルでも検索キーワードを目立たせようとしています。
マークアップを維持するには、単なるテキストファイル以上のものが必要です。色を保持するためにHTML出力を使用します。
aha をインストールします。つまり、 nix端末のANSIエスケープシーケンスをHTMLコードに変換します "
Sudo apt-get install aha
次に、grep
(またはls
)の出力を次のように保存します。
ls --color=always | aha --black --title 'ls-with-colors' > ls-with-colors.html
オプション:
--black param to set background as black color
--title param to set the title for HTML page
pygmentize
によるファイル拡張子の構文ハイライト
pygmentize
のインストール:
Sudo apt-get install python-pygments
次に、この種類のコマンドを実行します。
pygmentize file.pl | grep -i --color=always version | aha --black > ls-with-colors.html
出力ファイルで何をしたいのかに応じて、通常のテキストファイルに色を追加することができます。これは、色がいくつかの特殊文字に由来するためです。 Grepは、ファイルにリダイレクトするときにそれらを印刷したくないようです。そのため、次のように強制する必要があります。
grep --color=always "stuff" input.txt > output.txt
これで、ファイルをコンソールに印刷すると、Bashはこれらの文字を「この色を使用」として解釈するため、色付きで印刷されます。
cat output.txt
ただし、vim
などのエディターで開くと、奇妙な文字が表示されます。たとえば、コマンドを使用するとき
echo "A sentence. A red sentence. Another sentence." \
| grep --color=always "A red sentence" > output.txt
cat
を使用して印刷すると、出力は正しく見えますが、vim
で開くと、
A sentence. ^[[01;31m^[[KA red sentence^[[m^[[K. Another sentence.
そのため、エディターを使用したい場合、これはおそらく望みのものではありません。
正しく理解できたら、ターミナル出力をテキストファイルに保存したいですか?ただし、色でフォーマットする必要があります。その場合、私のアイデアは次のとおりです。
おそらくご存知のように、grep出力をテキストファイルにキャプチャした場合、それがテキストファイルであるため、フォーマットすることはできません。したがって、私が知る限り、簡単な方法でそれを行うことはできません。
それにもかかわらず、簡単な回避策があります。これは、どの種類のファイルが開いているかをテキストエディターに認識させることから成ります。たとえば、grep出力にbashコンポーネントがあるため、bashの強調表示が機能するとします(ちなみに、これらは多くの場合、ターミナルの色付き出力に表示される色です)。そのため、テキスト出力を適切な拡張子を持つファイルに保存するのがコツです。次のようなことをする代わりに:
ls | grep something > output
あなたは行くかもしれません
ls | grep something > output.sh
これにより、gedit(または適切なテキストエディター)は、bashコードについて話していることを自動的に認識し、それに応じて強調表示します。出力に色を付ける必要はありません。開いているコードの種類を認識すると、プログラムがそれを行います。他の種類の形式を使用している場合は、拡張機能を、目的に合わせて拡張機能を調整するだけです(たとえば、> output.xml、> output.html、> output.py ...など)。幸運を! :)
だから、もし私がそれを手に入れたなら、あなたはあなたが検索した言葉を強調したい。繰り返しますが、プレーンテキストであるという理由だけで、プレーンテキストファイルでそれを行うことはできません。ただし、HTMLコーディングを使用するなど、非常に簡単な方法でフォーマットを追加できます。これにより、出力がhtmlコードに変換され、htmlを解釈できるプログラム(libreoffice writer、firefox、10000 etceteras)で出力を開くと、いくつかの単語が強調表示されます。
そのために、これがhtmlにエクスポートされたgrepであるとしましょう:
ls | grep keytext > output.html
次に、出力でkeytextを強調表示します。 sedを使用して、次のように実行できます。
sed -i 's/keytext/<font color="red">keytext<\/font>/g' output.html
これで、キーテキストが赤で強調表示されます。