텍스트에서 정규식을 강조 표시하는 명령?

텍스트에서 정규식을 강조 표시하는 명령?

텍스트에서 특정 표현을 강조하는 명령이 있나요?

저는 '검색' 기능과 같은 기능을 찾고 있지만 뷰어 대신 표준 출력에 일반 텍스트가 출력됩니다 less.

예:

$ cat test.txt | highlight "an"

전망아프가니스탄에서 NATO의 질서있는 철수이스트하미드 카르자이 뎀 대통령 시절 두 번의 좌절을 겪었다.미군에 대한 제한을 설정하다d 탈리브평화회담을 중단했다.

지정된 정규식을 강조 표시하기 위해 색상이나 다른 수단을 사용할 수 있습니다.

답변1

이것이 기능 때문인지 아니면 숨겨진 부작용 때문인지는 확실하지 않지만 GNU grep2.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의 질서있는 철수이스트하미드 카르자이 뎀 대통령 시절 두 번의 좌절을 겪었다.미군에 대한 제한을 설정하다d 탈리브평화회담을 중단했다.

blessburn@blessburn:/tmp$ ./colorme.py '(Af.*? |NA[\w]{2})' test.txt

질서정연한 전망나토탈퇴아프가니스탄하미드 카르자이 대통령이 미군 병력 제한을 요구하고 탈레반이 평화 회담을 중단하면서 두 차례의 좌절을 겪었습니다.

답변4

$cat test.txt | grep --colour=auto -C 100000 an

"색상"도 작동합니다. grep이 항상 옵션을 사용하도록 별칭을 정의할 수도 있습니다.

alias grep='grep --colour=auto -C 100000'

위의 내용을 /etc/profile.d/ 어딘가나 .bashrc 등에 넣으십시오.

관련 정보