AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 677327
Accepted
abacox
abacox
Asked: 2021-11-13 21:36:30 +0800 CST2021-11-13 21:36:30 +0800 CST 2021-11-13 21:36:30 +0800 CST

为什么这个词不能是grep?

  • 772

我只能访问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后iconvISO8859-1

./rae-iso88591.txt: text/plain; charset=iso-8859-1
linux grep
  • 4 4 个回答
  • 331 Views

4 个回答

  • Voted
  1. jarnosz
    2021-11-14T10:44:36+08:002021-11-14T10:44:36+08:00

    正如@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 位代码页中字母的字符代码

    cat rae.txt | grep -e '^pat.tico'
    

    或 UTF-8 上的两个(或尽可能多的)点。

    cat rae.txt | grep -e '^pat..tico'
    

    你的旅费可能会改变。

    • 2
  2. Best Answer
    ilkkachu
    2021-11-14T11:49:55+08:002021-11-14T11:49:55+08:00

    好吧,不确定这是否是您的问题,但找不到正确行的一个可能原因是字母 é 的两种编码。有 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
  3. abacox
    2021-11-14T11:21:19+08:002021-11-14T11:21:19+08:00

    是的!感谢你们。:)

    最终为我解决的是将文件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.     
    
    
    • 0
  4. Praveen Kumar BS
    2021-11-14T01:13:58+08:002021-11-14T01:13:58+08:00

    有时如果它在开头包含额外的空格,所以我们在通配符下面使用

    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.     
    
    • -2

相关问题

  • 有没有办法让 ls 只显示某些目录的隐藏文件?

  • 使用键盘快捷键启动/停止 systemd 服务 [关闭]

  • 需要一些系统调用

  • astyle 不会更改源文件格式

  • 通过标签将根文件系统传递给linux内核

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve