文本文件——通过正则表达式搜索,将结果加粗以便实际打印出来

文本文件——通过正则表达式搜索,将结果加粗以便实际打印出来

我无法立即想到一个应用程序可以让我做到这一点。

我有一个包含数百行的文档,我想通过正则表达式进行搜索,并将搜索结果加粗或斜体化。我对正则表达式或其他任何东西都没有问题,只是想不出允许这样做的应用程序。

我通常在 Windows 中使用 grep/sed/awk 或 notepad++,但这当然不允许我将结果加粗。grep 可以,但我也需要打印......

答案1

您使用的是 Windows,我不确定 LPT:是否可以理解要打印的文本/文档中的旧式“ANSI.SYS”样式的命令序列或类似的“转义序列”。

另外:您没有说明您使用的是否是 TEXT-FILE 文档或 WORD 文档。

以下是如何sed在 Linux bash shell 中使“0d”和“0a”(CR 和 LF)在纯文本中突出显示的示例。注意:od使用显示的参数打印字节值十六进制及其ascii表示形式。

$ cat 第一个文件
1. 那只敏捷的棕色狐狸跳过了那只懒狗。

$ od -t x1z -w24 第一个文件 | sed -re 's/(0a)/\x1b[1m\1\x1b[m/g;s/(0d)/\x1b[1m\1\x1b[m/g'
0000000 31 2e 20 54 68 65 20 71 75 69 63 6b 20 62 72 6f 77 6e 20 66 6f 78 20 6a >1. 敏捷的棕色狐狸 j<
0000030 75 6d 70 65 64 20 6f 76 65 72 20 74 68 65 20 6c 61 7a 79 20 64 6f 67 2e > 打败了那只懒狗。<
0000060 0a >.<
0000061

注意:最后一个“0a”应该是粗体,但这并没有发生,似乎不可能。

您看到的嵌入的和是使 Ubuntu 终端以粗体打印然后关闭它所需的序列。这些来自 terminfo 数据库,更一般地可以通过和生成,如下\x1b[1m所示:\x1b[mtput boldtput sgr 0

$ tput bold | od -t x1z -w24
0000000 1b 5b 31 6d >.[1m<
0000004

$ tput sgr 0 | od -t x1z -w24
0000000 1b 28 42 1b 5b 30 6d >.(B.[0m<
0000007

答案2

尝试

$ export GREP_COLORS='ms=01;33'
$ grep -C 1000 '\<abc\>' file.txt

Linux 和 Unix grep 命令帮助和示例

答案3

如果您愿意为此目的将文本导入 Microsoft Word,并且 Word 的搜索功能足够强大,那么您可以使用 Word 执行此操作。(Word 可以搜索类似 glob 的通配符,但不能搜索真正的正则表达式。)在“查找和替换”对话框中,单击“更多 >>”,然后单击“替换为”字段,然后单击“格式”->“字体”,并设置要应用于找到的字符串的字体:

            查找并替换字体

相关内容