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

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

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

나는 less에서 "검색" 기능과 같은 것을 찾고 있지만 뷰어 대신 stdout에서 일반 텍스트 출력을 사용합니다 less.

예:

$ cat test.txt | highlight "an"

전망하나NATO, 아프가니스탄에서 질서있게 철수하나하나하미드 카르자이 대통령은 집권 후 두 번의 좌절을 겪었다.하나미군에 대한 제한하나d 탈레반하나평화 회담은 중단되었습니다.

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

답변1

이것이 기능 때문인지 숨겨진 부작용 때문인지는 확실하지 않지만 grepGNU 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, 아프가니스탄에서 질서있게 철수하나하나하미드 카르자이 대통령은 집권 후 두 번의 좌절을 겪었다.하나미군에 대한 제한하나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 또는 다른 위치에 넣으십시오.

관련 정보