免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1945 | 回复: 9
打印 上一主题 下一主题

[文本处理] !!急!!关于awk命令的一个奇怪问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-04-29 15:34 |只看该作者 |倒序浏览
小弟遇到一个非常奇怪的问题,就是执行
awk '{if ($3 >= "17:30:00") print $0}' file11.txt > file12.txt
awk '{if ($3 >= "17:30:00") print $0}' file21.txt > file22.txt
awk '{if ($3 >= "17:30:00") print $0}' file31.txt > file32.txt
后,其中的file12.txt开头有一堆^@,而file22.txt、file32.txt就正常,不知什么原因?哪位高手能解释下?该如何解决?谢谢了!

原始文件相关位置:
CONS03^KE> 17:29:49.481 17:29:49 ST,/Z SYS$*ALTRUN$.PUTLT/RUN,6,,0/SECRET
CONS03^NO> 17:29:49.856 17:29:49   PUTLT  START
CONS03^NO> 17:29:50.075 17:29:50   PUTLT *CITA$A*CITA$TRACE TRANSFERED
CONS03^NO> 17:29:52.122 17:29:52   PUTLT  FIN
CONS03^KE> 17:30:00.606 17:30:00 XTP3 STATS REPORT
CONS03^KE> 17:30:00.872 17:30:00 XTP3 STATS OFF
CONS03^NO> 17:30:01.044 17:30:01   Statistics gathering is enabled
CONS03^KE> 17:30:01.262 17:30:01 XTP3 STATS ON

执行awk后的结果文件(非预期):
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@9.039 11:50:09 TASK*MSG: LILY*START.XPIDSC/RUN,0 WILL START AS 93635204$199*1.
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@EE/P104754B RCVD PID 35308/EE DSL 16:11:47
CONS03^KE> 17:30:00.606 17:30:00 XTP3 STATS REPORT
CONS03^KE> 17:30:00.872 17:30:00 XTP3 STATS OFF


预期执行awk后的结果文件:
CONS03^KE> 17:30:00.606 17:30:00 XTP3 STATS REPORT
CONS03^KE> 17:30:00.872 17:30:00 XTP3 STATS OFF

论坛徽章:
36
摩羯座
日期:2013-09-23 16:37:312015年亚洲杯之沙特阿拉伯
日期:2015-04-14 09:10:172015亚冠之柏太阳神
日期:2015-06-25 08:48:212015亚冠之武里南联
日期:2015-07-28 09:01:082015亚冠之莱赫维亚
日期:2015-07-28 15:44:172015亚冠之柏斯波利斯
日期:2015-09-06 14:08:52白银圣斗士
日期:2015-11-25 17:06:2815-16赛季CBA联赛之吉林
日期:2015-12-09 16:59:072016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之辽宁
日期:2016-04-14 09:29:04luobin
日期:2016-06-17 17:46:3615-16赛季CBA联赛之天津
日期:2016-08-16 14:11:01
2 [报告]
发表于 2014-04-29 15:38 |只看该作者
本帖最后由 LikeLx 于 2014-04-29 15:38 编辑
  1. [root@dbserver ~]# awk '{if ($3 >= "17:30:00") print $0}' a.txt
  2. CONS03^KE> 17:30:00.606 17:30:00 XTP3 STATS REPORT
  3. CONS03^KE> 17:30:00.872 17:30:00 XTP3 STATS OFF
  4. CONS03^NO> 17:30:01.044 17:30:01   Statistics gathering is enabled
  5. CONS03^KE> 17:30:01.262 17:30:01 XTP3 STATS ON
复制代码
  1. 我按照你的代码执行,没有问题啊?
复制代码

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
3 [报告]
发表于 2014-04-29 15:40 |只看该作者
本帖最后由 jason680 于 2014-04-29 15:46 编辑

回复 1# beber2k

dump your file to check it

$ hexdump -C FILE
00000000  43 4f 4e 53 30 33 5e 4b  45 3e 20 31 37 3a 32 39  |CONS03^KE> 17:29|
00000010  3a 34 39 2e 34 38 31 20  31 37 3a 32 39 3a 34 39  |:49.481 17:29:49|
00000020  20 53 54 2c 2f 5a 20 53  59 53 24 2a 41 4c 54 52  | ST,/Z SYS$*ALTR|
00000030  55 4e 24 2e 50 55 54 4c  54 2f 52 55 4e 2c 36 2c  |UN$.PUTLT/RUN,6,|
00000040  2c 30 2f 53 45 43 52 45  54 0a 43 4f 4e 53 30 33  |,0/SECRET.CONS03|
00000050  5e 4e 4f 3e 20 31 37 3a  32 39 3a 34 39 2e 38 35  |^NO> 17:29:49.85|
00000060  36 20 31 37 3a 32 39 3a  34 39 20 20 20 50 55 54  |6 17:29:49   PUT|
00000070  4c 54 20 20 53 54 41 52  54 0a 43 4f 4e 53 30 33  |LT  START.CONS03|
00000080  5e 4e 4f 3e 20 31 37 3a  32 39 3a 35 30 2e 30 37  |^NO> 17:29:50.07|
00000090  35 20 31 37 3a 32 39 3a  35 30 20 20 20 50 55 54  |5 17:29:50   PUT|
000000a0  4c 54 20 2a 43 49 54 41  24 41 2a 43 49 54 41 24  |LT *CITA$A*CITA$|
000000b0  54 52 41 43 45 20 54 52  41 4e 53 46 45 52 45 44  |TRACE TRANSFERED|
000000c0  0a 43 4f 4e 53 30 33 5e  4e 4f 3e 20 31 37 3a 32  |.CONS03^NO> 17:2|
000000d0  39 3a 35 32 2e 31 32 32  20 31 37 3a 32 39 3a 35  |9:52.122 17:29:5|
000000e0  32 20 20 20 50 55 54 4c  54 20 20 46 49 4e 0a 43  |2   PUTLT  FIN.C|
000000f0  4f 4e 53 30 33 5e 4b 45  3e 20 31 37 3a 33 30 3a  |ONS03^KE> 17:30:|
00000100  30 30 2e 36 30 36 20 31  37 3a 33 30 3a 30 30 20  |00.606 17:30:00 |
00000110  58 54 50 33 20 53 54 41  54 53 20 52 45 50 4f 52  |XTP3 STATS REPOR|
00000120  54 0a 43 4f 4e 53 30 33  5e 4b 45 3e 20 31 37 3a  |T.CONS03^KE> 17:|
00000130  33 30 3a 30 30 2e 38 37  32 20 31 37 3a 33 30 3a  |30:00.872 17:30:|
00000140  30 30 20 58 54 50 33 20  53 54 41 54 53 20 4f 46  |00 XTP3 STATS OF|
00000150  46 0a 43 4f 4e 53 30 33  5e 4e 4f 3e 20 31 37 3a  |F.CONS03^NO> 17:|
00000160  33 30 3a 30 31 2e 30 34  34 20 31 37 3a 33 30 3a  |30:01.044 17:30:|
00000170  30 31 20 20 20 53 74 61  74 69 73 74 69 63 73 20  |01   Statistics |
00000180  67 61 74 68 65 72 69 6e  67 20 69 73 20 65 6e 61  |gathering is ena|
00000190  62 6c 65 64 0a 43 4f 4e  53 30 33 5e 4b 45 3e 20  |bled.CONS03^KE> |
000001a0  31 37 3a 33 30 3a 30 31  2e 32 36 32 20 31 37 3a  |17:30:01.262 17:|
000001b0  33 30 3a 30 31 20 58 54  50 33 20 53 54 41 54 53  |30:01 XTP3 STATS|
000001c0  20 4f 4e 0a                                       | ON.|
000001c4


   

论坛徽章:
0
4 [报告]
发表于 2014-04-29 15:42 |只看该作者
回复 2# LikeLx

我这里只是给你截取了一小段,其实file1是很大的,而且有好几个,只有1个会发生这个情况,很奇怪!
我刚才在网上查了一下,说有^@是控制符,这个怎么去掉?

   

论坛徽章:
0
5 [报告]
发表于 2014-04-29 15:43 |只看该作者
回复 3# jason680



我那个文本很大,执行hexdump后返回的内容也很多,这个怎么看?
   

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
6 [报告]
发表于 2014-04-29 15:45 |只看该作者
回复 5# beber2k

$ head -c 200 FILE | hexdump -C
00000000  43 4f 4e 53 30 33 5e 4b  45 3e 20 31 37 3a 32 39  |CONS03^KE> 17:29|
00000010  3a 34 39 2e 34 38 31 20  31 37 3a 32 39 3a 34 39  |:49.481 17:29:49|
00000020  20 53 54 2c 2f 5a 20 53  59 53 24 2a 41 4c 54 52  | ST,/Z SYS$*ALTR|
00000030  55 4e 24 2e 50 55 54 4c  54 2f 52 55 4e 2c 36 2c  |UN$.PUTLT/RUN,6,|
00000040  2c 30 2f 53 45 43 52 45  54 0a 43 4f 4e 53 30 33  |,0/SECRET.CONS03|
00000050  5e 4e 4f 3e 20 31 37 3a  32 39 3a 34 39 2e 38 35  |^NO> 17:29:49.85|
00000060  36 20 31 37 3a 32 39 3a  34 39 20 20 20 50 55 54  |6 17:29:49   PUT|
00000070  4c 54 20 20 53 54 41 52  54 0a 43 4f 4e 53 30 33  |LT  START.CONS03|
00000080  5e 4e 4f 3e 20 31 37 3a  32 39 3a 35 30 2e 30 37  |^NO> 17:29:50.07|
00000090  35 20 31 37 3a 32 39 3a  35 30 20 20 20 50 55 54  |5 17:29:50   PUT|
000000a0  4c 54 20 2a 43 49 54 41  24 41 2a 43 49 54 41 24  |LT *CITA$A*CITA$|
000000b0  54 52 41 43 45 20 54 52  41 4e 53 46 45 52 45 44  |TRACE TRANSFERED|
000000c0  0a 43 4f 4e 53 30 33 5e                           |.CONS03^|
000000c8

   

论坛徽章:
0
7 [报告]
发表于 2014-04-29 15:54 |只看该作者
从网上找到了一个解决办法
tr -d '\000' < file1 > file2

论坛徽章:
3
酉鸡
日期:2014-04-23 17:17:56丑牛
日期:2014-05-08 11:41:302015亚冠之德黑兰石油
日期:2015-08-03 11:14:27
8 [报告]
发表于 2014-04-29 16:00 |只看该作者
我这里也没有问题!
awk '{if ($3 >= "17:30:00") print $0}' 1 > 2         
[root@/workspace]# cat 2
CONS03^KE> 17:30:00.606 17:30:00 XTP3 STATS REPORT
CONS03^KE> 17:30:00.872 17:30:00 XTP3 STATS OFF
CONS03^NO> 17:30:01.044 17:30:01   Statistics gathering is enabled
CONS03^KE> 17:30:01.262 17:30:01 XTP3 STATS ON
[root@/workspace]# cat 1
CONS03^KE> 17:29:49.481 17:29:49 ST,/Z SYS$*ALTRUN$.PUTLT/RUN,6,,0/SECRET
CONS03^NO> 17:29:49.856 17:29:49   PUTLT  START
CONS03^NO> 17:29:50.075 17:29:50   PUTLT *CITA$A*CITA$TRACE TRANSFERED
CONS03^NO> 17:29:52.122 17:29:52   PUTLT  FIN
CONS03^KE> 17:30:00.606 17:30:00 XTP3 STATS REPORT
CONS03^KE> 17:30:00.872 17:30:00 XTP3 STATS OFF
CONS03^NO> 17:30:01.044 17:30:01   Statistics gathering is enabled
CONS03^KE> 17:30:01.262 17:30:01 XTP3 STATS ON

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
9 [报告]
发表于 2014-04-29 16:36 |只看该作者
其中的file12.txt开头有一堆^@,而file22.txt、file32.txt就正常


操作的源文件不是同一个,这两个结果的文件就没有可比性呀。

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
10 [报告]
发表于 2014-04-29 16:39 |只看该作者
null 字符作怪。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP