【问题标题】:Find and highlight text in linux command line在 linux 命令行中查找并突出显示文本
【发布时间】:2012-09-30 17:07:05
【问题描述】:

我正在寻找一个在文本文件中搜索字符串的 linux 命令, 并在文件中的每次出现时突出显示(颜色)它,而不省略文本行(就像 grep 一样)。

【问题讨论】:

  • 你的意思是像在编辑器里面?
  • 不清楚你想要什么。简单的文本文件没有颜色,除非为特定的编辑器完成或更改其格式(例如将它们转换为 HTML 文件或类似的东西),否则无法突出显示它们。

标签: linux search command-line-interface highlight


【解决方案1】:

使用dwdiff,输出颜色和行号的差异。

echo "Hello world @ $(date)" > file1.txt
echo "Hello world @ $(date)" > file2.txt

dwdiff -c -C 0 -L file1.txt file2.txt

【讨论】:

    【解决方案2】:

    command | grep -iz -e "keyword1" -e "keyword2"(如果只搜索单个单词则忽略 -e 开关,-i 忽略大小写,-z 视为单个文件)

    或者,在读取文件时 grep -iz -e "keyword1" -e "keyword2" '文件名'

    command | grep -A 99999 -B 99999 -i -e "keyword1" "keyword2"(如果只搜索单个单词则忽略 -e 开关,-i 忽略大小写,-A 和 -B 表示要显示的关键字之前/之后的行数)

    或者,在读取文件时

    grep -A 99999 -B 99999 -i -e "keyword1" "keyword2" '文件名'

    【讨论】:

      【解决方案3】:

      试试

      tail -f yourfile.log | egrep --color 'DEBUG|'
      

      其中 DEBUG 是您要突出显示的文本。

      【讨论】:

        【解决方案4】:

        我最近有这样的需求,并破解了一个小程序来做到这一点。 Link

        用法:./highlight test.txt '^foo' 'bar$'

        请注意,这是非常粗糙的,但可以通过一些抛光制成通用工具。

        【讨论】:

          【解决方案5】:

          我写了这个方便的小脚本。它可能可以扩展以更好地处理 args

          #!/bin/bash
          if [ "$1" == "" ]; then
              echo "Usage: hl PATTERN [FILE]..."
          elif [ "$2" == "" ]; then
              grep -E --color "$1|$" /dev/stdin
          else
              grep -E --color "$1|$" $2
          fi
          

          它对于突出显示正在运行的进程的用户很有用:

          ps -ef | hl "alice|bob"
          

          【讨论】:

            【解决方案6】:

            我认为您的意思是“不省略文本行”(而不是发射)...

            我知道没有这样的命令,但是您可以使用这样的脚本(这是一个简单的解决方案,将文件名(不带空格)作为第一个参数,将搜索字符串(也不带空格)作为第二个参数):

            #!/usr/bin/env bash
            ifs_store=$IFS;
            IFS=$'\n';
            for line in $(cat $1);
                do if [ $(echo $line | grep -c $2) -eq 0 ]; then
                    echo $line;
                else
                    echo $line | grep --color=always $2;
                fi
            done
            IFS=$ifs_store
            

            另存为,例如colorcat.sh,适当设置权限(以便能够执行)并调用它

            colorcat.sh filename searchstring
            

            【讨论】:

              猜你喜欢
              • 2019-04-29
              • 1970-01-01
              • 2015-03-09
              • 1970-01-01
              • 2016-12-15
              • 2013-03-28
              • 2023-03-27
              • 2019-03-15
              • 1970-01-01
              相关资源
              最近更新 更多