在不影响文本结构的情况下突出显示单词

use*_*694 3 grep sed awk

$cat contents.txt

cat-1.15

cat-1.15

cat-1.15
cat-1.18
Run Code Online (Sandbox Code Playgroud)

上面的输出有空行

$cat contents.txt | grep cat 导致单词 cat 被突出显示,但结果文本也被合并,消除了空行

cat-1.15
cat-1.15
cat-1.15
cat-1.18
Run Code Online (Sandbox Code Playgroud)

如何在不影响文本结构的情况下 grep 突出显示,以便唯一的区别是突出显示的 grep 术语?

jes*_*e_b 5

使用 GNU grep,这可以通过-z选项来完成。

-z, --null-data

将输入和输出数据视为行序列,每行都以零字节(ASCII NUL 字符)而不是换行符结尾。与 -Z 或 --null 选项一样,此选项可与 sort -z 等命令一起使用以处理任意文件名。

这也是一个UUOC。您可以使用 grep 指定输入文件。

$ grep --color cat contents.txt
cat-1.15
cat-1.15
cat-1.15
cat-1.18
$ grep --color -z cat contents.txt
cat-1.15

cat-1.15

cat-1.15
cat-1.18
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这将尝试将整个文件读入内存。如果它很大,将使用一大块内存。 (2认同)