gpt4 book ai didi

linux - 哇 |为什么长度不对?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:15:54 24 4
gpt4 key购买 nike

我不明白..这很有趣,但我不明白))

请看下面

echo -n '\\prj\prj.prjjmbr.Interp\PRIL_35.jpg' | awk -F ';' '{a=length($1);print lenght a}'

输出是35,没错

echo -n '\\prj\prj.prjjmbr.Interp\PRIL_35.jpg' | wc -c

输出是35,也对

echo -n '\\prj\prj.prjjmbr.Interp\Very long path with cyrillic symbols\полученные данные_по проект\отчеты\Отчет \Dinam_interp_2D_yujo-vost_ch_Urabor-Yahinskij_LU_2008 ( GNPTs_PurGeo ) \Otchet\GrafPril\PRIL_35.jpg' | awk -F ';' '{print length ($1)}'

输出为 202。

echo -n '\\prj\prj.prjjmbr.Interp\Very long path with cyrillic symbols\полученные данные_по проект\отчеты\Отчет \Dinam_interp_2D_yujo-vost_ch_Urabor-Yahinskij_LU_2008 ( GNPTs_PurGeo ) \Otchet\GrafPril\PRIL_35.jpg' | wc -c

输出为 237。

为什么使用非拉丁符号我会得到不同的结果?我该如何解决?

附注修复后,我需要使用 substr 函数,即 substr (path, 10, 8);

最佳答案

使用非拉丁符号会得到不同的结果,因为字符串中的字符数和字符串中的字节数不同。 wc -c 返回字节数,awk 返回字符数。

确保使用正确的号码。如果需要存储字符串,则需要知道字节数。如果你需要显示一个字符串,你可能对字符数更感兴趣。

来自 man wc:

-c, --bytes print the byte counts

来自 man awk:

As of version 3.1.5, gawk is multibyte aware. This means that index(), length(), substr() and match() all work in terms of characters, not bytes.

关于linux - 哇 |为什么长度不对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12774903/

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