免费注册 查看新帖 |

Chinaunix

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

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

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

文本内容转换!

原帖由 "james_dlc" 发表:
有点错误改了一下

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


还是不行耶,前面的序号少了|,第二列的数字前的0没去掉.

论坛徽章:
0
22 [报告]
发表于 2004-11-14 16:57 |只看该作者

文本内容转换!

原帖由 "dolphinwwt" 发表:
问题是这样的:
原文本内容如下:
|012345678900|00012345600|
|012345678900|0012345600|
要把这文本文件的内容重新转为:
1|012345678900|12345600|||||
2|012345678900|12345600|||||
注:转换后的文本?.........


试试我的方法:

nawk 'BEGIN { FS = OFS = "|" }{ $1 = NR; $3 = sprintf("%d", $3); printf("%s||||\n", $0) }' filename

在unix5.0.5下通过。

论坛徽章:
0
23 [报告]
发表于 2004-11-14 20:01 |只看该作者

文本内容转换!

又改了一下
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
24 [报告]
发表于 2004-11-14 20:41 |只看该作者

文本内容转换!

原帖由 "dolphinwwt" 发表:



还是有点问题,因为你这样是指定了前面有几个0,我的文件里的这一列是不规则的0的,有多有少.

呵呵,实在想不出来啦

  1. /home/lee#cat file
  2. |012345678900|012345600|
  3. |012345678900|0012345600|
  4. |012345678900|00012345600|
  5. |012345678900|000012345600|
  6. /home/lee#nl file|sed 's/00|0\+/00|/g;s/.*/&||||/g'|tr -d '[:blank:]'
  7. 1|012345678900|12345600|||||
  8. 2|012345678900|12345600|||||
  9. 3|012345678900|12345600|||||
  10. 4|012345678900|12345600|||||
复制代码

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

文本内容转换!

  1. #!/bin/bash

  2. file=1.txt

  3. nl $file | while read line; do
  4.         left=$(echo $line | cut -d '|' -f1,2| tr -d ' ')
  5.         mid=$(echo $line | cut -d '|' -f3 | sed 's/^0*//')
  6.         right=$(echo $line | cut -d '|' -f4-)
  7.         echo "$left|$mid|$right||||"
  8. done
复制代码

论坛徽章:
0
26 [报告]
发表于 2004-11-15 00:28 |只看该作者

文本内容转换!

原帖由 "begincwcw" 发表:


试试我的方法:

nawk 'BEGIN { FS = OFS = "|" }{ $1 = NR; $3 = sprintf("%d", $3); printf("%s||||\n", $0) }' filename

在unix5.0.5下通过。


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

论坛徽章:
0
27 [报告]
发表于 2004-11-15 00:29 |只看该作者

文本内容转换!

[quote]原帖由 "網中人"][/quote 发表:


原文为:
|6058680002220001234|001234500|
|6058680001220001230|000234520|
输出结果为:
出错`left=$'

论坛徽章:
0
28 [报告]
发表于 2004-11-15 00:31 |只看该作者

文本内容转换!

[quote]原帖由 "寂寞烈火"][/quote 发表:


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

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

文本内容转换!

  1. [netman@www tmp]$ cat 1.sh
  2. #!/bin/bash

  3. file=1.txt

  4. nl $file | while read line; do
  5.         left=$(echo $line | cut -d '|' -f1,2| tr -d ' ')
  6.         mid=$(echo $line | cut -d '|' -f3 | sed 's/^0*//')
  7.         right=$(echo $line | cut -d '|' -f4-)
  8.         echo "$left|$mid|$right||||"
  9. done
  10. [netman@www tmp]$ cat 1.txt
  11. |6058680002220001234|001234500|
  12. |6058680001220001230|000234520|
  13. |123456789|000123456|
  14. |0123456789|000123456|
  15. [netman@www tmp]$ ./1.sh
  16. 1|6058680002220001234|1234500|||||
  17. 2|6058680001220001230|234520|||||
  18. 3|123456789|123456|||||
  19. 4|0123456789|123456|||||
复制代码

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

文本内容转换!

final version:

  1. /home/lee#cat file
  2. |012345678900|012345600|
  3. |012345678900|0012345600|
  4. |012345678900|00012345600|
  5. |012345678900|000012345600|
  6. |6058680002220001234|001234500|
  7. |6058680001220001230|000234520|
  8. /home/lee#nl file|sed 's/|0\+/|/2g;s/|0\+/|/g;s/.*/&||||/g'|tr -d '[:blank:]'
  9. 1|12345678900|12345600|||||
  10. 2|12345678900|12345600|||||
  11. 3|12345678900|12345600|||||
  12. 4|12345678900|12345600|||||
  13. 5|6058680002220001234|1234500|||||
  14. 6|6058680001220001230|234520|||||
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP