DIY 솔루션

DIY 솔루션

터미널에서 텍스트 파일을 보고 해당 파일의 번호를 강조표시하고 싶습니다. 로 열 때 얻는 것과 같습니다 gedit. less, cat또는 vim다른 뷰어/편집자 와 함께 이 작업을 수행 할 수 없습니다 .

추신: 제 질문은 간단하지만 의미 있는 검색에 적합한 키워드를 찾을 수 없습니다.

DIY 솔루션

플랜 A

각 숫자를 일치시키고 강조 표시하여 각 줄을 인쇄합니다.

egrep --colour=always '[-+]?[0-9]*[\.e]?[0-9]|$'

그냥 별칭을 주면 될 것 같아요. 기본 옵션이 있는지 알고 싶습니다.

편집: e@αГsнιι에 exponential , tnx에 대한 지원을 추가했습니다.

플랜 B

글쎄, 내 최종 해결책은 다음과 같습니다

grep -P --colour=always '(?:^|(?<=[\\, ;\-\+\*\/]))[-+]?[0-9]*[\.eE]?[0-9]+|$'

다음 구분 문자 또는 줄의 시작 부분을 찾고 많은 숫자 형식 및 줄 끝과 일치합니다(모든 줄이 인쇄되도록).

마지막으로 두 가지 유용한 별칭 view 및 lessiew가 있습니다 v.

alias v="grep --colour=always -P '(?:^|(?<=[\\, ;\-\+\*\/]))[-+]?[0-9]*[\.eE]?[0-9]+|$'"
function lv {                                                                    
    v $1 | less -R                                                               
}

플랜 C

더 나은 정규식은 다음과 같습니다(작은따옴표 안에 사용).플랜 B):

(?<![\w\.])[-+]?[0-9]*[\.eE]?\-?[0-9]+|$

이 솔루션은 영숫자가 아닌 점으로 구분된 기호를 모두 고려합니다. 전자 항목은 보편성이 부족합니다.

편집: 정렬을 표시하기 -nT위해 줄 번호를 추가했습니다 grep. Edit2: 를 추가하여 음수 지수를 설명합니다 \-?.

긴 이야기 짧게

이것을 당신의 에 붙여넣고 , , ~/.bashrc를 사용하십시오 .vlvcv보다,시야가 적음, 그리고열 보기텍스트 파일:

# Highlight numbers when displaying text files
alias v="grep --colour=always -nTP '(?<![\w\.])[-+]?\-?[0-9]*[\.eE]?[0-9]+|$'"
# Send v output to less
function lv {
    v $1 | less -R
}
# Convert CSV to TSV and send to lv
function cv {
    column -ts, $1 | lv
}

편집: CSV 파일 읽기 바로가기 및 댓글을 추가했습니다.

답변1

+/- 기호의 합과도 일치합니다 e.

 grep -E --color '[-+\.]?[0-9](|[eE][-+]?[0-9]|$)'

이는 아래의 다양한 숫자와 일치합니다.

12345
-12345
+12345
.12345
12.345
12345.
123e45
123E45
123E+45
123E-45
123e+45
123e-45

답변2

그리고 vim:

:syn on
:syn match Number '\v[-+]?\d*\.?\d+([eE][-+]?\d+)?'

숫자만 원하는 경우(적어도 이 형식의 숫자에는 0x123, 1,23, 0x1ap-2, VII, 1,000,000, ...) 강조 표시를 추가할 수도 있습니다. 다양한 언어와 함께 제공되는 많은 구문 강조 표시 vim도 해당 언어가 이해하는 숫자를 강조 표시합니다.

다음을 수행하는 경우:

grep -F '[eE' /usr/share/vim/vim*/syntax/*

과학 표기법이 강조 표시된 언어를 포함하여 어떤 형태로든 숫자가 있는 모든 언어를 볼 수 있습니다 vim.

또한 어떤 상황에서 이러한 숫자를 강조 표시할 수 있는지 결정할 수도 있습니다. 예를 들어 ls.1, PS1, 1+2, 에서 1을 -1-강조 표시 해야 합니까? 강조해야 할까요 1e2, 2e3말아야 할까요 1e2e3?

답변3

다른 가능성:

Colorize, color text

        0) reset-no-color (local), Emits sequence to remove (stray) color
           echo -e "\[\033[0;00m\]"

        1) coforma (local), color for match, add specified color for pattern
           matches

        2) coteli (local), insert ANSI color codes around line blocks,
           COlor TExt LInes

        3) spc, "supercat", colorize and print to standard output,
           general (but therefore complex) rules for coloring.
           Found in Debian repository and at:
           https://github.com/tanderson92/supercat

        4) ansifilter, convert color codes, etc., to HTML, BBcode, others
           http://www.andre-simon.de/

        5) my-highlight (local)
           http://unix.stackexchange.com/questions/46562/how-do-you-colorize-only-some-keywords-for-a-bash-script

        6) my-hilite (local)
           http://unix.stackexchange.com/questions/46562/how-do-you-colorize-only-some-keywords-for-a-bash-script

        7) hh, easy highlighting, wrapper around ack
           https://github.com/paoloantinori/hhighlighter

        8) pygmentize, parse and colorize program source file
           In Debian package python-pygments

예를 들어 다음을 실행했습니다.

spc data1

구성 파일은 .sprcc입니다.

Cyan                 cya     t ([0-9]+)

얻으려면 :

Mike Brady 2
Carol 3.1415 Brady
77 Greg Brady
Marcia Brady

청록색 숫자 - 죄송합니다. 포럼에서 BBCode나 HTML에서 색상을 렌더링하는 방법을 모르겠습니다. 또는... - 제안해 주시면 대단히 감사하겠습니다.

행운을 빕니다... 건배, drl

관련 정보