免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: dolphinwwt
打印 上一主题 下一主题

文本内容转换! [复制链接]

论坛徽章:
0
41 [报告]
发表于 2004-11-15 02:21 |只看该作者

文本内容转换!

#cat 1.txt
|06058680000001234560|0012345600|
|06058680000001234562|0000566530|
#sed 's/\(^|[0-9]\{1,\}|\)0\{1,\}\([1-9][0-9]\{1,\}|\)/\1\2/g;s/.*/&||||/g' file|nl|tr -d '[]'
1|06058680000001234560|0012345600|||||
2|06068680000001234562|0000566530|||||
#

论坛徽章:
0
42 [报告]
发表于 2004-11-15 02:24 |只看该作者

文本内容转换!

|06058680000001234560|0012345600|
|06058680000001234562|0000566530|
结果要的是如下:
1|06058680000001234560|12345600|||||
2|06068680000001234562|566530|||||

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
43 [报告]
发表于 2004-11-15 02:25 |只看该作者

文本内容转换!

原帖由 "dolphinwwt" 发表:
'
1|06058680000001234560|0012345600|||||
2|06068680000001234562|0000566530|||||
#

也许是sed的版本的问题!
sed 's/\(^|[0-9]\{1,\}|\)0\{1,\}\([1-9][0-9]\{1,\}|\)/\1\2/g;s/.*/&||||/g' file|nl|tr -d '[]'
/home/lee#ksh f
1|012345678900|12345600|||||
2|012345678900|12345600|||||
3|012345678900|12345600|||||
4|012345678900|12345600|||||
5|6058680002220001234|1234500|||||
6|6058680001220001230|234520|||||
/home/lee#sed --version
GNU sed version 4.0.5

Copyright (C) 2002 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,
to the extent permitted by law.

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
44 [报告]
发表于 2004-11-15 02:27 |只看该作者

文本内容转换!

/home/lee#cat f
sed 's/\(^|[0-9]\{1,\}|\)0\{1,\}\([1-9][0-9]\{1,\}|\)/\1\2/g;s/.*/&||||/g' file|nl|tr -d '[]'
/home/lee#ksh f
1|012345678900|12345600|||||
2|012345678900|12345600|||||
3|012345678900|12345600|||||
4|012345678900|12345600|||||
5|6058680002220001234|1234500|||||
6|6058680001220001230|234520|||||
7|06058680000001234560|12345600|||||
8|06058680000001234562|566530|||||

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
45 [报告]
发表于 2004-11-15 02:28 |只看该作者

文本内容转换!

用GNU/Linux吧,UNIX已经没什么前途了
睡觉去了           

论坛徽章:
0
46 [报告]
发表于 2004-11-15 02:35 |只看该作者

文本内容转换!

原帖由 "寂寞烈火" 发表:
用GNU/Linux吧,UNIX已经没什么前途了
睡觉去了           


我也想啊,但我这里的主机全都是Sco  Unix 的.好的,谢谢你!晚安,改天再探讨.

论坛徽章:
0
47 [报告]
发表于 2004-11-15 08:51 |只看该作者

文本内容转换!

原帖由 "dolphinwwt" 发表:


原文为:
|6058680002220001234|001234500|
|6058680001220001230|000234520|
输出结果为:
1| 6058680002220001234 3 |||
2| 6058680001220001230 3 ||||


我觉得很奇怪,我在unix5.0.5下运行的都正确的,不知你的unix是什么版本的。请有unix5.0.5的各位网友试试我的程序,看是否能通过。

论坛徽章:
0
48 [报告]
发表于 2004-11-15 13:51 |只看该作者

文本内容转换!

  1. nawk -F"|" '{n=length($3)-length($3+0);$3=$3+0;i=0;while(i++<n)$0=$0 "|";if(n>0)$0=$0 "|";print NR "|" $0}' infile
复制代码


测试结果如何?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
49 [报告]
发表于 2004-11-15 14:24 |只看该作者

文本内容转换!

try this:

  1. sed 's/\(^|[^|]*\)|0*\(.*\)/\1|\2/' 1.txt | awk '{print NR$0"||||"}' | tr -d ' '
复制代码

论坛徽章:
0
50 [报告]
发表于 2004-11-15 20:43 |只看该作者

文本内容转换!

原帖由 "james_dlc" 发表:

测试结果如何?


测试结果如下:
#cat 1.txt
6058680012000123456|0010020|
6058680022200123450|0005000|
#nawk -F"|" '{n=length($3)-length($3+0);$3=$3+0;i=0;while(i++<n)$0=$0 "|";if(n>0)$0=$0 "|";print NR "|" $0}' 1.txt
1|6058680012000123456 0010020 0
2|6058680022200123450 0005000 0
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP