
テキスト内の特定の表現を強調表示するコマンドはありますか?
私は、ビューアではなく stdout に通常のテキスト出力を行う、less の「検索」機能のようなものを探していますless
。
例:
$ cat test.txt | highlight "an"
今後の見通しのアフガニスタンからの秩序あるNATO撤退のですのハミド・カルザイ大統領が民主党を率いたことで、2度の挫折を経験した。の米軍の制限を撤廃のd タリブの和平交渉を中止した。
指定された正規表現を強調表示するために、色やその他の手段を使用できます。
答え1
これが機能によるものか、それとも隠れた副作用によるものかはわかりませんが、これは GNU grep
2.11 では動作します。
grep --color 'an\|' test.txt
答え2
ああ--passthru
これを実行するオプションがあります:
ack --passthru an test.txt
some_command | ack --passthru an -
答え3
私のこのスクリプトを試してみてください。ファイルを指定するか、標準入力を取ります。強調表示したいテキストの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
今後の見通しのアフガニスタンからの秩序あるNATO撤退のですのハミド・カルザイ大統領が民主党を率いたことで、2度の挫折を経験した。の米軍の制限を撤廃のd タリブの和平交渉を中止した。
blessburn@blessburn:/tmp$ ./colorme.py '(Af.*? |NA[\w]{2})' test.txt
秩序ある見通しNATO撤退アフガニスタンハミド・カルザイ大統領が米軍の制限を要求し、タリバンが和平交渉を停止したことで、タリバンは2つの挫折を経験した。
答え4
$cat test.txt | grep --colour=auto -C 100000 an
「color」も機能します。 grep が常にオプションを使用するようにエイリアスを定義することもできます。
alias grep='grep --colour=auto -C 100000'
上記を /etc/profile.d/ のどこか、または .bashrc などに置いてください。