分页: 1 / 1

awk 和异常字符的问题

发表于 : 2010-08-13 9:41
netzsm
文本如下

代码: 全选

400590|   |B|鸿琛鮸鱼肚                              |Hongchenmian Yudu                       |鸿琛鮸鱼肚        |1 kg|kg        |公斤(KG)  |ZUMA|5|10|2008|Y|   |       |04|2010|S|06/05/2009|          
在使用代码

代码: 全选

awk -F"|" '{print $1,$2,$4,$5,$6}' text
时,其中的 “鮸”字的一半会被当作分隔符 "|" ,造成分割出的字段大于实际情况,
并且剩下的半个汉字会和紧接的字符连在一起造成意想不到的结果


有没有高人帮忙解决此问题?

Re: awk 和异常字符的问题

发表于 : 2010-08-13 10:25
kingkongmok
kk@dn83:~$ cat test/txt
400590| |B|鸿琛鮸鱼肚 |Hongchenmian Yudu |鸿琛鮸鱼肚 |1 kg|kg |公斤(KG) |ZUMA|5|10|2008|Y| | |04|2010|S|06/05/2009|
kk@dn83:~$ awk -F"|" '{print $1,$2,$4,$5,$6}' test/txt
400590 鸿琛鮸鱼肚 Hongchenmian Yudu 鸿琛鮸鱼肚
kk@dn83:~$ locale
LANG=en_US.utf8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
kk@dn83:~$

Re: awk 和异常字符的问题

发表于 : 2010-08-13 10:31
link_01
awk -F"|" '{for (i=1; i<NF; i++) print i,$i}' tt

代码: 全选

1 400590
2    
3 B
4 鸿琛鮸鱼肚    
5 Hongchenmian Yudu    
6 鸿琛鮸鱼肚    
7 1 kg
8 kg    
9 公斤(KG)  
10 ZUMA
11 5
12 10
13 2008
14 Y
15    
16    
17 04
18 2010
19 S
20 06/05/2009
好像我不存在這個問題?

Re: awk 和异常字符的问题

发表于 : 2010-08-13 10:35
trigger

代码: 全选

$ echo "400590|   |B|鸿琛鮸鱼肚                              |Hongchenmian Yudu                       |鸿琛鮸鱼肚        |1 kg|kg        |公斤(KG)  |ZUMA|5|10|2008|Y|   |       |04|2010|S|06/05/2009| " | cut -f 1,2,4,5,6 -d"|"
400590| |鸿琛鮸鱼肚 |Hongchenmian Yudu |鸿琛鮸鱼肚

Re: awk 和异常字符的问题

发表于 : 2010-08-13 10:35
netzsm
我用的是,HP-UX,也许是你粘贴过去编码问题没有了,我转编码看看,谢谢

Re: awk 和异常字符的问题

发表于 : 2010-08-13 10:38
trigger

代码: 全选

$ echo "400590|   |B|鸿琛鮸鱼肚                              |Hongchenmian Yudu                       |鸿琛鮸鱼肚        |1 kg|kg        |公斤(KG)  |ZUMA|5|10|2008|Y|   |       |04|2010|S|06/05/2009| " | awk -F"|" '{print $1,$2,$4,$5,$6}'
400590 鸿琛鮸鱼肚 Hongchenmian Yudu 鸿琛鮸鱼肚