回答:
これが機能によるものなのか、何らかの隠れた副作用によるものなのかはわかりませんが、これはGNU grep
2.11で機能します:
grep --color 'an\|' test.txt
grep 'an' OR ''
。''
成功した入力内のすべての場所で何にもマッチしません。an
何も強調表示できないため、のみが強調表示されます。:
grep --color -e 'an' -e ' '
(スペースに合わせると、色付けできず、うまくいきました)。にパイピングするよりもはるかに優れていますがsed -e ''/an/s//$(printf "\033[33;1m&\033[0m")/''
、多分後者の方がパフォーマンスが高いでしょう。別の検索語の「an」を変更します。;)
bashrc
、すべてのエイリアスを一覧表示するために使用したコマンドを変更しました。現在、すべてのエイリアスが赤で強調表示されています。素晴らしい!alias aliases="clear;cat ~/.bashrc|grep --color \"alias\""
私のこのスクリプトを試すことができます。ファイルを指定するか、標準入力を使用します。ハイライトするテキストのPython正規表現を定義できます。強調表示されたテキストのデフォルトはネオングリーンです(私は黒の背景を使用しています!)しかし、ANSIカラーコードを変更できます。
#!/usr/bin/env python
import sys
import re
def highlight_text(text,pat):
def replacement_funk(matchobj): return '\x1b[42m%s\x1b[0m'%matchobj.group(0)
return re.sub(pat,replacement_funk,text)
if __name__ == '__main__':
if len(sys.argv) == 2:
input = sys.stdin
pat = sys.argv[1]
elif len(sys.argv) == 3:
input = open(sys.argv[2])
pat = sys.argv[1]
else:
sys.stderr.write("colorme pattern [inputfile]")
text = input.read()
print highlight_text(text,pat)
ここだ例。
blessburn@blessburn:/tmp$ cat test.txt | ./colorme.py an
見通しAfghから秩序NATOの撤退AN ISTは、カルザイ大統領のように苦しんで2つの挫折は、DEM 、米国軍のDED制限タリブをd 和平交渉を停止します。
blessburn@blessburn:/tmp$ ./colorme.py '(Af.*? |NA[\w]{2})' test.txt
アフガニスタンからのNATOの秩序ある撤退の見通しは、ハミド・カルザイ大統領が米国軍隊に対する制限を要求し、タリバンが和平会談を中止したため、2つの後退に苦しんだ。
<b>
単語の一部を太字にする必要がある場合に使用します。
$cat test.txt | grep --colour=auto -C 100000 an
「色」も機能します。エイリアスを定義して、grepが常にオプションを使用するようにすることもできます。
alias grep='grep --colour=auto -C 100000'
上記を/etc/profile.d/のどこか、または.bashrcなどに置きます。
-C 1000000
あなたは再びgrepすることはできません。ただ、やるalias highlight='grep --colour=auto -C 1000000'. The cat in the first example is also not necessary:
のgrep --colour = -C 100000 file`オート。
grep
コンテキスト行のコレクションをどのように処理するかを検討したことはありません。)
highlight
コマンドの