我只能访问 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.
顺便说一句,不仅仅是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
答案1
好吧,不确定这是否是您的问题,但找不到正确行的一个可能原因是字母 é 的两种编码。 Unicode 字符 U+00E9(带有尖音符的拉丁小写字母 E),它本身就是整个字形;还有e
和 U+0301 的组合(组合尖锐口音)。这些的 UTF-8 表示形式是十六进制的c3 a9
和65 cc 81
。
复制问题中的文本,这封信显示为 U+00E9。
所以:
$ grep ^patético file.txt # no output
$ grep ^patético file.txt
patético, ca. (Del lat. patheticus, ...
当然,根据系统的设置方式,首先输入角色可能会出现问题,但您可以通过以下方法解决这个问题:
$ grep $'^pat\xc3\xa9tico' file.txt
patético, ca. (Del lat. patheticus, ...
转换为 ISO 8859-1 会将其转换为单个字节e9
,因此在C
语言环境中,单个字节.
就足以匹配它。尽管至少在我的系统上,使用 UTF-8 语言环境,单个e9
字节将是无效字符并且.
不会匹配它。
当然,对于我的 UTF-8 终端来说它仍然是无效字符,因此输出如下所示:
$ iconv -f utf8 -t latin1 file.txt | LC_ALL=C grep $'^pat.tico'
pat�tico, ca. (Del lat. patheticus, ...
答案2
正如 @cas 所建议的,通过 iconv 管道输入 utf-8 可能会成功。尝试
iconv -f utf-8 -t CP1252 rae.txt | grep -e '^patético'
只需确保控制台代码页是 Win1252 或 Latin1 即可使其正常工作。
在 Win10 上使用 busybox-w32 v1.33 进行测试,在 TinyCore10 上使用 v1.29 进行测试。
如果您正在真正的 *nix 风格上运行,您应该检查和/或修复控制台的代码页,就像@Inian 暗示的那样,以使其正常工作。
附录
请注意,您只需通过搜索就可以避免猜测干净 8 位代码页中字母的 CharCode
cat rae.txt | grep -e '^pat.tico'
或 UTF-8 上的两个(或必要数量的)点。
cat rae.txt | grep -e '^pat..tico'
你的旅费可能会改变。
答案3
是的!感谢你们。 :)
最终对我有用的是将文件UTF-8
从ISO8859-1
.并使用常用表达而不是通配符。我终于得到了我正在寻找的定义。
grep -e '^pat.tico' ./rae-iso88591.txt
产量
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.
答案4
有时如果它在开头包含额外的空格,那么我们使用下面的通配符
grep "[[:space:]]*\?patético," file
输出
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.