gpt4 book ai didi

string - awk åäö 变音字符的长度为 2

转载 作者:行者123 更新时间:2023-12-02 09:34:59 27 4
gpt4 key购买 nike

我使用 awk (mac os x) 只打印 n 个字符及更长的行。

如果我在如下所示的文本文件(strings.txt)上尝试:

four
foo
bar
föö
bår
fo
ba


我运行这个 awk 脚本:

awk ' { if( length($0) >= 3 ) print $0 } ' <strings.txt 

输出为:

four
foo
bar
föö
bår


(最后两行不应被打印)。似乎包含元音变音字符(å、ä、ö...)的单词算作两个字符。

(输入文件以UTF8格式保存。)

最佳答案

BSD awk(又名 BWK awk),预装在 macOS 上(从 macOS 10.13 开始仍然如此),遗憾的是 - <强>不支持 Unicode。

您的选择是:

  • 如果您知道所涉及的字符适合单字节编码,例如 ISO-8859-1,您可以使用 iconv如下:

    iconv -f UTF-8 -t ISO-8859-1 file | awk 'length >= 3' | iconv -f ISO-8859-1 -t UTF-8
  • 安装支持 Unicode 的不同 awk 实现,例如 gawk (GNU Awk) 或 mawk;例如,通过 Homebrew :
    • 酿造信息gawk
    • 酿造信息mawk
  • 使用不同的预装工具支持 Unicode,例如 sed:

    sed -n '/^.\{3,\}/p' file

关于string - awk åäö 变音字符的长度为 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7578497/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com