為什麼這個詞不能是grep?
我只能訪問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
好吧,不確定這是否是您的問題,但找不到正確行的一個可能原因是字母 é 的兩種編碼。有 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, ...