Board logo

标题: [文本处理] gawk 支持哪些编码? [打印本页]

作者: 娜美    时间: 2023-8-14 19:54     标题: gawk 支持哪些编码?

本帖最后由 娜美 于 2023-8-15 17:14 编辑

gawk 支持有那些编码

可以让gawk对UTF16编码文本直接处理吗

例,偿试不行
  1. gawk --locale=ZH_CN.UTF16 "/A+/"  1
复制代码
UTF16测验文本
  https://wwkt.lanzoul.com/i0yCB15dwcti

gawk5.1 版本
https://wwkt.lanzoul.com/iOZVa15gopbi
作者: Batcher    时间: 2023-8-14 20:25

回复 1# 娜美


    请找个UTF16编码文本上传到网盘。另外说明一下你使用的gawk是哪个版本。
作者: 娜美    时间: 2023-8-14 21:05

本帖最后由 娜美 于 2023-8-14 21:11 编辑

回复 2# Batcher

我不知道那个gawk版本可以哦,  还请告知一下

我用的是
GNU Awk 4.1.0, API: 1.0
Copyright (C) 1989, 1991-2013 Free Software Foundation.
  1. gawk  "/BBBBBBBBBF/" 2.txt
复制代码
提示不能读取
gawk: fatal: cannot open file `2.txt' for reading (No such file or directory)

测验文本
  https://wwkt.lanzoul.com/i0yCB15dwcti
作者: Five66    时间: 2023-8-15 14:12

额,1楼里的
例,偿试不行

    gawk --locale=ZH_CN.UTF16 "/A+/"  1

中的不行是指啥,选项不行还是选项值不行还是文件不行还是其他的不行,至少应该把运行后的提示复制粘贴发出来吧
作者: 娜美    时间: 2023-8-15 15:27

本帖最后由 娜美 于 2023-8-15 15:32 编辑

回复 4# Five66


   运行后提示:
gawk: fatal: cannot open file `2.txt' for reading (No such file or directory)

似乎不支持UTF16LE编码文本
作者: Five66    时间: 2023-8-15 15:37

回复 5# 娜美

可是1楼代码里的没有2.txt啊,不知道你运行的是啥
作者: 娜美    时间: 2023-8-15 15:40

本帖最后由 娜美 于 2023-8-15 15:46 编辑

回复 6# Five66

Sorry.  .  以bat运行后提示:
  1. gawk --locale=ZH_CN.UTF16 "/BBBBBBBBBF/" 1.txt
复制代码
  1. Usage: gawk [POSIX or GNU style options] -f progfile [--] file ...
  2. Usage: gawk [POSIX or GNU style options] [--] 'program' file ...
  3. POSIX options:          GNU long options: (standard)
  4.         -f progfile             --file=progfile
  5.         -F fs                   --field-separator=fs
  6.         -v var=val              --assign=var=val
  7. Short options:          GNU long options: (extensions)
  8.         -b                      --characters-as-bytes
  9.         -c                      --traditional
  10.         -C                      --copyright
  11.         -d[file]                --dump-variables[=file]
  12.         -D[file]                --debug[=file]
  13.         -e 'program-text'       --source='program-text'
  14.         -E file                 --exec=file
  15.         -g                      --gen-pot
  16.         -h                      --help
  17.         -i includefile          --include=includefile
  18.         -l library              --load=library
  19.         -L [fatal]              --lint[=fatal]
  20.         -n                      --non-decimal-data
  21.         -M                      --bignum
  22.         -N                      --use-lc-numeric
  23.         -o[file]                --pretty-print[=file]
  24.         -O                      --optimize
  25.         -p[file]                --profile[=file]
  26.         -P                      --posix
  27.         -r                      --re-interval
  28.         -S                      --sandbox
  29.         -t                      --lint-old
  30.         -V                      --version
  31. To report bugs, see node `Bugs' in `gawk.info', which is
  32. section `Reporting Problems and Bugs' in the printed version.
  33. gawk is a pattern scanning and processing language.
  34. By default it reads standard input and writes standard output.
  35. Examples:
  36.         gawk '{ sum += $1 }; END { print sum }' file
  37.         gawk -F: '{ print $1 }' /etc/passwd
  38. 请按任意键继续. . .
复制代码

作者: 娜美    时间: 2023-8-15 15:54

回复 6# Five66

换了一个5.1版本gawk
   GNU Awk 5.1.0, API: 4.1 (GNU MPFR 4.1.0, GNU MP 6.2.0) (mingw-w64)Copyright (C) 1989, 1991-2020 Free Software Foundation.
  1. gawk --locale=zh_cn.utf16 "/BBBBBBBBBF/" 1.txt
复制代码
bat运行后提示:
"gawk": bad locale name specified by the option '--locale': zh_cn.utf16
作者: Five66    时间: 2023-8-15 15:55

那就试试过管道或者切换代码页
  1. type 1.txt|gawk "/BBBBBBBBBF/"
复制代码
  1. chcp 65001
  2. gawk "/BBBBBBBBBF/" 1.txt
复制代码

作者: Five66    时间: 2023-8-15 16:01

回复 8# 娜美

试试
--locale=zh_CN.Unicode
--locale=zh_CN.UNICODE
--locale=zh_CN.unicode
--locale=zh_CN.utf-16
--locale=zh_CN.UTF-16
--locale=zh_CN.Utf-16
--locale=zh_CN.utf-16LE
--locale=zh_CN.UTF-16LE
--locale=zh_CN.Utf-16LE
--locale=zh_CN.utf-16le
--locale=zh_CN.UTF-16le
--locale=zh_CN.Utf-16le
--locale=zh_CN.utf-16Le
--locale=zh_CN.UTF-16Le
--locale=zh_CN.Utf-16Le
作者: 娜美    时间: 2023-8-15 16:02

回复 9# Five66

gawk似乎支持区域编码的

其中有一行提示
  1. gawk --h
  2. -Z locale-name          --locale=locale-name
复制代码

作者: 娜美    时间: 2023-8-15 16:07

回复 10# Five66

都试了,
  1. "gawk": bad locale name specified by the option '--locale': zh_CN.Unicode
  2. "gawk": bad locale name specified by the option '--locale': zh_CN.UNICODE
  3. "gawk": bad locale name specified by the option '--locale': zh_CN.unicode
  4. "gawk": bad locale name specified by the option '--locale': zh_CN.utf-16
  5. "gawk": bad locale name specified by the option '--locale': zh_CN.UTF-16
  6. "gawk": bad locale name specified by the option '--locale': zh_CN.Utf-16
  7. "gawk": bad locale name specified by the option '--locale': zh_CN.utf-16LE
  8. "gawk": bad locale name specified by the option '--locale': zh_CN.UTF-16LE
  9. "gawk": bad locale name specified by the option '--locale': zh_CN.Utf-16LE
  10. "gawk": bad locale name specified by the option '--locale': zh_CN.utf-16le
  11. "gawk": bad locale name specified by the option '--locale': zh_CN.UTF-16le
  12. "gawk": bad locale name specified by the option '--locale': zh_CN.Utf-16le
  13. "gawk": bad locale name specified by the option '--locale': zh_CN.utf-16Le
  14. "gawk": bad locale name specified by the option '--locale': zh_CN.UTF-16Le
  15. "gawk": bad locale name specified by the option '--locale': zh_CN.Utf-16Le
  16. 请按任意键继续. . .
复制代码

作者: Five66    时间: 2023-8-15 16:20

这个呢
--locale=zh_CN.65001
作者: Five66    时间: 2023-8-15 16:35

gawk是支持utf16的吧,也许是你文件路径问题
作者: Batcher    时间: 2023-8-15 16:49

回复 3# 娜美


试试这样:
  1. type 1.txt | gawk "/A+/" > 2.txt
复制代码
建议把文件链接更新到顶楼方便大家查看
作者: 娜美    时间: 2023-8-15 17:07

回复  娜美


试试这样:建议把文件链接更新到顶楼方便大家查看
Batcher 发表于 2023-8-15 16:49


顶楼已添加测验文件链接

我想弄明白gawk是否支持UTF16编码文本

   因为gawk5.1版本有一个区域编码提示



  1. gawk --h
  2. GNU Awk 5.1.0, API: 4.1 (GNU MPFR 4.1.0, GNU MP 6.2.0) (mingw-w64)Copyright (C) 1989, 1991-2020 Free Software Foundation.
  3. -Z locale-name          --locale=locale-name
复制代码

作者: 娜美    时间: 2023-8-15 17:12

本帖最后由 娜美 于 2023-8-15 17:18 编辑

回复 13# Five66

试了不行, 但没任何错误提示,   但输出为空

这个是gawk5.1 版本, 你试试看
   https://wwkt.lanzoul.com/iOZVa15gopbi
作者: 娜美    时间: 2023-8-16 13:51

gawk是支持utf16的吧,也许是你文件路径问题
Five66 发表于 2023-8-15 16:35



gawk不支持utf16编码文件 !
作者: Five66    时间: 2023-8-16 14:55

回复 18# 娜美

也不能说不支持,总之看下面的图


作者: Five66    时间: 2023-8-16 15:13

回复 19# Five66

还是说一下吧,图里用的就是1楼的gawk和txt
第一个命令,能读取并输出,只不过连utf16的bom也一起输出了
第二个命令,用了--locale选项,也能读取并输出,跟第一个命令相比,输出时连utf16的bom也没了
至于那些空格,就是utf16那些00字节,大概是gawk输出也是utf16,由于cmd编码默认ansi,输出时的utf16被cmd当成ansi了,然后00字节显示成空了
作者: 娜美    时间: 2023-8-16 15:30

回复 20# Five66


  那怎么解嘛  中文是占了2个字节,   ,要等gawk升级, 还是只能只样了
作者: Five66    时间: 2023-8-16 15:47

回复 21# 娜美

只是看起来那样,实际又没变,不使用cmd的输出重定向应该就行了吧
实在不行或者就是想用gawk,那就用cygwin或者mingw的gawk




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2