【问题标题】:How to highlight end of line with line number如何用行号突出显示行尾
【发布时间】:2022-01-21 16:28:08
【问题描述】:

我想用不同颜色的行号突出显示行尾。我知道显示行号的命令,即awk '{print $0","NR;}' file,但不知道如何突出显示行尾。任何人都可以帮助我吗?如果可能的话,我想在一个命令中同时执行这两项操作。

【问题讨论】:

  • “突出显示”是什么意思?
  • 表示行尾以不同颜色显示
  • 你是说你想在每一行附加彩色的行号吗?您是否还需要它们在列中对齐?

标签: shell awk


【解决方案1】:
$ seq 4 6 | awk -v red="$(tput setaf 1)" -v reset="$(tput sgr0)" '{print $0, red NR reset}'
4 1
5 2
6 3

你显然看不到上面的颜色,所以这里的输出显示了颜色变化的转义符,以便你可以看到它们存在:

$ seq 4 6 | awk -v red="$(tput setaf 1)" -v reset="$(tput sgr0)" '{print $0, red NR reset}' | cat -v
4 ^[[31m1^[(B^[[m
5 ^[[31m2^[(B^[[m
6 ^[[31m3^[(B^[[m

【讨论】:

    【解决方案2】:

    如果你的终端支持 ANSI 转义码,你可以试试这个:

    awk '{ print $0, "\x1b[7m" NR "\x1b[0m" }' file
    

    【讨论】:

      【解决方案3】:

      你可以这样做:

      perl -mTerm::ANSIColor=color -lne 'print $_, color("red"), $., color("reset")'
      

      perl -mTerm::ANSIColor=RESET,RED -lne 'print $_, RED, $., RESET'
      

      perl 中,$_ 是当前行,$. 是行号。 REDRESET 是不言自明的。从 ANSIColor 的文档中,您可以选择:

        CLEAR           RESET             BOLD            DARK
        FAINT           ITALIC            UNDERLINE       UNDERSCORE
        BLINK           REVERSE           CONCEALED
      
        BLACK           RED               GREEN           YELLOW
        BLUE            MAGENTA           CYAN            WHITE
        BRIGHT_BLACK    BRIGHT_RED        BRIGHT_GREEN    BRIGHT_YELLOW
        BRIGHT_BLUE     BRIGHT_MAGENTA    BRIGHT_CYAN     BRIGHT_WHITE
      
        ON_BLACK        ON_RED            ON_GREEN        ON_YELLOW
        ON_BLUE         ON_MAGENTA        ON_CYAN         ON_WHITE
        ON_BRIGHT_BLACK ON_BRIGHT_RED     ON_BRIGHT_GREEN ON_BRIGHT_YELLOW
        ON_BRIGHT_BLUE  ON_BRIGHT_MAGENTA ON_BRIGHT_CYAN  ON_BRIGHT_WHITE
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-15
        • 2020-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-24
        • 1970-01-01
        相关资源
        最近更新 更多