awk 和异常字符的问题

sh/bash/dash/ksh/zsh等Shell脚本
回复
netzsm
帖子: 2
注册时间: 2008-11-15 17:34

awk 和异常字符的问题

#1

帖子 netzsm » 2010-08-13 9:41

文本如下

代码: 全选

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
时,其中的 “鮸”字的一半会被当作分隔符 "|" ,造成分割出的字段大于实际情况,
并且剩下的半个汉字会和紧接的字符连在一起造成意想不到的结果


有没有高人帮忙解决此问题?
附件
pdm.txt
文本不能说明问题,看文件
(202 Bytes) 已下载 15 次
上次由 netzsm 在 2010-08-13 12:53,总共编辑 1 次。
头像
kingkongmok
帖子: 340
注册时间: 2006-03-23 14:48

Re: awk 和异常字符的问题

#2

帖子 kingkongmok » 2010-08-13 10:25

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:~$
头像
link_01
帖子: 1024
注册时间: 2008-11-05 13:24

Re: awk 和异常字符的问题

#3

帖子 link_01 » 2010-08-13 10:31

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
好像我不存在這個問題?
笔记
-------------------------------------
http://blog.163.com/wqt_1101
头像
trigger
帖子: 1604
注册时间: 2006-10-25 18:08

Re: awk 和异常字符的问题

#4

帖子 trigger » 2010-08-13 10:35

代码: 全选

$ 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 |鸿琛鮸鱼肚
楼主真是一派胡言,真可谓:“两个黄鹂鸣翠柳,不知所云;一行白鹭上青天,不知所止“。本来不想和你辩论,今天气愤不过,和你理论一番。我国宪法写得清清楚楚:“一夜夫妻百日恩,七楼以上才有电梯”。这个想必你知道,既然知道,你就不能断章取义,就算是天气预报,它还有不准的时候呢!!!再者说了,那中国银行也不是你一家开的。人家马拉多纳都结婚了,你还拿着粮票顶什么用呢。真是滑天下之大稽。前些日子,全国人大刚刚开过会,郑重声明:“中国不搞多party制,存栏母猪给补贴”。多好的事呢,楞让你这号人给搅混了。
netzsm
帖子: 2
注册时间: 2008-11-15 17:34

Re: awk 和异常字符的问题

#5

帖子 netzsm » 2010-08-13 10:35

我用的是,HP-UX,也许是你粘贴过去编码问题没有了,我转编码看看,谢谢
头像
trigger
帖子: 1604
注册时间: 2006-10-25 18:08

Re: awk 和异常字符的问题

#6

帖子 trigger » 2010-08-13 10:38

代码: 全选

$ 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 鸿琛鮸鱼肚
楼主真是一派胡言,真可谓:“两个黄鹂鸣翠柳,不知所云;一行白鹭上青天,不知所止“。本来不想和你辩论,今天气愤不过,和你理论一番。我国宪法写得清清楚楚:“一夜夫妻百日恩,七楼以上才有电梯”。这个想必你知道,既然知道,你就不能断章取义,就算是天气预报,它还有不准的时候呢!!!再者说了,那中国银行也不是你一家开的。人家马拉多纳都结婚了,你还拿着粮票顶什么用呢。真是滑天下之大稽。前些日子,全国人大刚刚开过会,郑重声明:“中国不搞多party制,存栏母猪给补贴”。多好的事呢,楞让你这号人给搅混了。
回复