我只能访问busybox, v 1.27
。
我正在尝试使用从 PDF 文档中提取的巨大 TXT 文件作为 TXT 字典,以便控制台友好。我想要得到的词是该行的第一个词。接下来是定义。
Word I'm grepping for:
patético
我正在使用的一个班轮是这样的:
cat ./rae.txt | grep '^patético'
cat
正在使用,因为我可以更快地删除我正在寻找的单词,而且效率更高。只需删除该行的最后一部分,即术语,它就可以节省几次击键。
大多数时候,我会得到我正在搜索的单词的定义,例如anhelo
.
$ grep -e '^anhelo' ./rae.txt
anhelo. (Del lat. anhelus). 1. m. Deseo vehemente.
anheloso, sa. (Del lat. anhelosus). 1. adj. Que tiene o siente anhelo. Anhelosos de con- cluir. 2. adj. Propio de lo que muestra anhelo. Mirada, búsqueda anhelosa. 3. adj. Dicho de la respiración: Frecuente y fatigosa. 4. adj. desus. Que respira de este modo.
如您所见,每一行都有定义,anhelo
并且anheloso
.
首先,我认为问题是单词后面的点.
和/或逗号,
,我认为它被扩展或解释为特殊字符而不是纯文本。但事实并非如此。
我的问题是:
为什么我不能 grep ^patético
?
为什么这不起作用?
grep -e '^patético' ./rae.txt
我正在运行的文本grep
是:
patería. 1. f. coloq. Chile y Perú. Muestra ocasional y fingida de amistad.
paternal. (De paterno). 1. adj. Propio del afecto, cariño o solicitud de padre.
paternalismo. 1. m. Tendencia a aplicar las formas de autoridad y protección propias del padre en la familia tradicional a relaciones sociales de otro tipo; políticas, laborales, etc. U. m. en sent. peyor.
paternalista. 1. adj. Dicho de una persona: Que adopta el paternalismo como forma de conducta. U. t. c. s. 2. adj. Que responde o parece responder a dicha actitud.
paternalmente. 1. adv. m. De modo propio o digno de un padre.
paternidad. (Del lat. paternitas, -atis). 1. f. Cualidad de padre. 2. f. Tratamiento que en algunas órdenes dan los religiosos inferiores a los padres condecorados de su orden, y que los seculares dan por reverencia a todos los religiosos en general, considerándolos como padres espirituales.
paterno, na. (Del lat. paternus). 1. adj. Perteneciente o relativo al padre. 2. adj. Propio del padre. 3. adj. Derivado de él. V. casa paterna
paternóster. (Del lat. Pater noster, Padre nuestro, palabras con que principia la oración dominical). 1. m. Oración del padrenuestro. 2. m. Padrenuestro que se dice en la misa, y es una de las partes de ella. 3. m. Cada uno de los aditamentos de alambre que se adaptan al chambel para aumentarle su capacidad de pesca. 4. m. Chambel ya preparado con estos artilugios. 5. m. coloq. Nudo gordo y muy apretado.
patero, ra. (De pato1). 1. adj. Chile y Perú. Adulador, lisonjeador. U. t. c. s. 2. m. Cazador de patos salvajes.
pateta. (De pata1). 1. m. coloq. diablo (|| príncipe de los ángeles rebelados). Ya se lo llevó pateta. No lo hiciera pateta. 2. m. coloq. Persona que tiene un vicio en la conformación de los pies o de las piernas. 3. m. pl. u. c. sing. Méx. diablo (|| príncipe de los ángeles rebela- dos). EL patetas.
patéticamente. 1. adv. m. De modo patético.
patético, ca. (Del lat. patheticus, y este del gr. o, que impresiona, sensible). 1. adj. Que es capaz de mover y agitar el ánimo infundiéndole afectos vehementes, y con particularidad dolor, tristeza o melancolía.
patetismo. 1. m. Cualidad de patético.
patí. (De or. guar.). 1. m. Arg. y Ur. Pez grande de río, de color gris azulado con man- chas oscuras. 2. m. C. Rica. Especie de empanada rellena de carne o papas.
-patía. (Del lat. -pathia, y este del gr. a, de la raíz -, sufrir, experimentar). 1. elem. com- pos. Significa 'sentimiento', 'afección' o 'dolencia'. Homeopatía, telepatía.
patiabierto, ta. (De pata1 y abierto). 1. adj. coloq. Que tiene las piernas torcidas e irreg- ulares, y separadas una de otra.
顺便说一句, is 不仅仅是patético
每个单词都带有tilde
; 在这个词是é
。我的系统没有 UTF-8 支持,也没有安装语言包。我认为这不应该是一个问题,因为字母只是一个字节流,而且如果我利用less
搜索不显示为grep
.
编辑0
语言环境
LANG=C
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=
文件 -i rae.txt
rae.txt: text/plain; charset=utf-8
编辑1
控制台代码页
C
POSIX
ANSI_X3.110-1983
ANSI_X3.4-1968
ISO-8859-1
ISO-8859-15
ISO-8859-2
编辑2
处理rae.txt
后iconv
ISO8859-1
./rae-iso88591.txt: text/plain; charset=iso-8859-1
正如@cas 所建议的那样,通过 iconv 管道输入 utf-8 可能会奏效。尝试
只需确保控制台代码页是 Win1252 或 Latin1 即可使其工作。
在 Win10 上使用 busybox-w32 v1.33 测试,在 TinyCore10 上使用 v1.29 测试。
如果您在真正的 *nix 上运行,您应该检查和/或修复控制台的代码页,就像 @Inian 暗示的那样,以使其工作。
附录
请注意,您只需搜索即可避免猜测干净的 8 位代码页中字母的字符代码
或 UTF-8 上的两个(或尽可能多的)点。
你的旅费可能会改变。
好吧,不确定这是否是您的问题,但找不到正确行的一个可能原因是字母 é 的两种编码。有 Unicode 字符 U+00E9(带有锐音的拉丁文小写字母 E),它本身就是整个字形;还有
e
和 U+0301 的组合(组合重音)。那些的 UTF-8 表示将是c3 a9
和65 cc 81
十六进制。从您的问题中复制文本,该字母显示为 U+00E9。
所以:
当然,根据系统的设置方式,首先输入角色可能会出现问题,但您可以通过以下方式解决这个问题:
转换为 ISO 8859-1 会将其转换为单字节
e9
,因此在C
语言环境中,单字节.
就足以匹配它。虽然至少在我的系统上,使用 UTF-8 语言环境,唯一的e9
字节将是无效字符并且.
不会匹配它。当然,对于我的 UTF-8 终端来说,它仍然是一个无效字符,所以输出如下所示:
是的!感谢你们。:)
最终为我解决的是将文件
UTF-8
从ISO8859-1
. 并使用正则表达式而不是通配符。我终于得到了我正在寻找的定义。产量
有时如果它在开头包含额外的空格,所以我们在通配符下面使用
输出