如何将隐形标记埋入文本行中?

n.r*_*.r. 3 grep text byte

如何将不可见标记埋入随机文本行中?这样的标记必须存在,但对于阅读打印在控制台上的文本的人来说,它是不可见的。

我想通过一个不可见的标记来识别这些行,例如,稍后将它们放入或取出。

我试过0x00没有成功。我希望grep0x00某处打印匹配的行。但这不起作用:

$ echo -e "a\0b" | hexdump -C
00000000  61 00 62 0a                                       |a.b.|
00000004
$ echo -e "a\0b" | grep "a\0b"
Run Code Online (Sandbox Code Playgroud)

Gil*_*il' 5

没有完全可靠的方法可以在文本文件中放置一个不可见的标记。毕竟,文本文件没有任何非纯文本的空间。注释(不属于正文的文本)是一种标记形式。

空字节是一个坏主意,不仅因为它们可能会以^@??或其他方式呈现,而且还因为许多文本处理工具会阻塞它们。空字节是C 编程语言中的字符串结束标记,许多程序将其视为文本块的结尾(例如,一行,但不一定),因为它们是用 C 编写的或使用用 C 编写的库.

如果您的文本以 Unicode 编码,您可以使用其几个零宽度字符之一:

空格不是单词成分,其他是。尽管这些字符都没有明显呈现(假设查看器具有合理的 Unicode 支持),但这在选择文本、移动、搜索等时会产生影响。中断空间可以呈现为换行符。