V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
fuxkcsdn
V2EX  ›  Linux

ag grep 搜索 gb18030 编码的文件,通过 iconv 转换成 utf8 后,在不使用临时文件的情况下,如何使得搜索结果带文件名?

  •  
  •   fuxkcsdn · 2017-07-31 11:11:02 +08:00 via iPhone · 2300 次点击
    这是一个创建于 2675 天前的主题,其中的信息可能已经有所发展或是发生改变。
    文件编码是 utf8 的话,用 ag 或 grep 都能用中文字符串进行搜索
    现在接手的一个项目规定要用 gb18030 编码,vim 中显示是没问题,但 ag grep 都无法搜索中文

    ```
    iconv -f gb18030 -t utf8 .* | grep "中文字符串"
    ```
    虽然可以搜索到,但却不显示文件名
    第 1 条附言  ·  2017-07-31 13:09:38 +08:00
    目前用
    ```
    grep `echo 中文字符串 | iconv -f utf8 -t gb18030` ./* -r
    ```
    来代替,倒是可以使得搜索结果带文件名了,就是搜索结果中中文是乱码(再 iconv 回 utf8 可以避免乱码)
    2 条回复    2017-07-31 16:15:26 +08:00
    pine
        1
    pine  
       2017-07-31 15:15:01 +08:00
    虽然不知道 ag grep 是个什么玩意,但是很明显楼主对编码的认知还有些偏差,当文件名是 gb18030,而你使用的是 utf8 的时候,你要记住不仅仅是把一种编码转换成另一种编码,而是两种编码同时在各自体系运行着,只有当你搜索这个过程的时候他们才联系起来,所以在你的这个例子中,当一种编码进入另一种编码体系的时候,都要进行转换。
    搜索条件是 utf8 to gb18030 内部执行搜索
    搜索结果是 gb18030 to utf8 然是后给你看的
    fuxkcsdn
        2
    fuxkcsdn  
    OP
       2017-07-31 16:15:26 +08:00 via iPhone
    @pine 标题忘了加逗号了,应该是“ ag,grep ”
    我文章里说的,要搜索的是文件内容,而不是文件名,单纯文件名的话反而没这烦恼
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3545 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 10:49 · PVG 18:49 · LAX 02:49 · JFK 05:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.