テキストファイルの内容を表示して各単語を強調表示するにはどうすればよいですか?
答え1
grep -C $(wc -l foo.txt | cut -d" " -f 1) --color word foo.txt
foo.txt
はファイルパス、はクエリword
です。慣れていない場合、grep
クエリは実際に正規表現。純粋に英数字であれば関係ありませんが、word
一部の文字(例えば、[
および)は]
正規表現で特別な意味を持ちます。文字通り使用するには、prefixを使用してください\
。さらに、これはシェルを通過するため、$
エスケープで機能しない場合は興味深い作業を行います\
。
word
引用符で囲むと、スペースを含めることができます。
ここで使用されている他のコマンドは、POSIXシステム(GNU / Linuxなど)にほぼ常に存在するものwc
です。使い方を説明するページがcut
あります。man
答え2
を使用すると、簡単にこれを行うことができますgrep
。file.txt
あなたのファイルはどこにありますか?word
強調表示したいテキストです。以下を使用できます。
grep --color -E 'word|$' file.txt
これは一致してハイライトです。word
。また、各行の末尾の空の|
文字列()を一致させて強調表示することもできます。$
ただし、文字列が空であるため、追加のテキストは実際には強調表示されません。
$
除いて一致word
目的は、すべての行に一致が含まれるようにすることです。その後、オプションがない場合、または他のユーティリティへの呼び出しがない場合でも、すべてのgrep
行を印刷します。-A
-B
-C
この-E
フラグはgrep
モード引数を次のように解釈します。POSIX拡張正規表現(むしろ)。中のキャラクターによって異なるword
、デフォルトの正規表現(BRE)を使用することができます。交互にすることは|
正式にPOSIX基本正規表現の一部ではありませんが、実装では以下grep
を使用して拡張としてサポートすることがよくあります\|
。
grep --color 'word\|$' file.txt
特に、GNU / LinuxシステムにはそれをサポートするGNU Grepがあります。を使用している場合は、--color
この動作を使用することもできます。
このコマンドは、次のコマンドより簡単です。ゴールディラックスの答え。しかし、この回答のスキルにはいくつかの状況で明らかな利点があります。ここでメソッドはとを|
使用するため、$
実際には固定文字列ではなく正規表現でなければなりません。しかしゴールディラックスアプローチ-F
、フラグを追加できます。引用する限り、必要なword
テキストを含めることができます。\
word
シェルがgrep
変更されずに渡されることを正しく保証します。
たとえば、次のように使用できます。
grep --color -FC "$(wc -l < file.txt)" 'word' file.txt
詳細については、次を参照してください。一致するラインだけでなく、すべてのラインを出力するようにgrepを説得します。(ようにスチールドライバー 提案)。
1 ~標準(IEEE Std 1003.1-2008)シフトが ERE ( 経由) の関数であることを指定します|
が、いいえBREの特徴。しかし、実装が許可されています\|
必要に応じて解釈してください。多くの人がこれを交互に解釈します。
一部の実装では、BRE構文を拡張して代替エントリを追加します。たとえば、サブ式 ""は文字列の末尾の ""または任意の位置にある ""
\(foo$\|bar\)
と一致します。拡張は未定義のシーケンスを使用してトリガーされます。foo
bar
\|