Linux 为什么长度不对?
我不明白。。这很有趣,但我不明白 请看下面Linux 为什么长度不对?,linux,awk,gawk,Linux,Awk,Gawk,我不明白。。这很有趣,但我不明白 请看下面 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 cyri
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
为什么使用非拉丁符号会得到不同的结果?我怎么能修好它
p、 s.修复后,我需要使用substr函数,即substr(路径,10,8) 我可以复制你的发现,并假设它与地区有关。 不是修复,而是“变通”
我可以复制你的发现,并假设它与地区有关。 不是修复,而是“变通”
使用非拉丁符号会得到不同的结果,因为字符串中的字符数和字符串中的字节数之间存在差异
wc-c
返回字节数,awk
返回字符数
确保使用正确的号码。如果需要存储字符串,则需要知道字节数。如果需要显示字符串,您可能对字符数更感兴趣
从man wc
:
-c、 --字节
打印字节计数
从man awk
:
从3.1.5版开始,gawk具有多字节感知功能。这意味着
index()、length()、substr()和match()都以
字符,而不是字节
使用非拉丁符号会得到不同的结果,因为字符串中的字符数和字符串中的字节数之间存在差异
wc-c
返回字节数,awk
返回字符数
确保使用正确的号码。如果需要存储字符串,则需要知道字节数。如果需要显示字符串,您可能对字符数更感兴趣
从man wc
:
-c、 --字节
打印字节计数
从man awk
:
从3.1.5版开始,gawk具有多字节感知功能。这意味着
index()、length()、substr()和match()都以
字符,而不是字节
wc-m
应产生OP需要的字符计数。gawk引入--字符为字节
将所有输入数据视为单字节字符。wc-m
应产生OP需要的字符计数。gawk引入--字符为字节
将所有输入数据视为单字节字符。为什么使用-F';'代码>,对我来说似乎没用?你为什么用-F';'代码>,对我来说似乎没用?
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' | LANG=C awk -F ';' '{print length ($1)}'