当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 6 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [问题]向高手请教这样的占位控制问题。
帖子发表于 : 2008-05-14 18:41 

注册: 2008-03-22 1:19
帖子: 45
送出感谢: 0 次
接收感谢: 0 次
例030719212037为2003年7月19号21时20分37秒,转为如下格式3719212037其中表示空格
即年月日时分秒各自占两格,少于两位数的就用空格代表0
请问要如何解决?


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-05-15 10:29 

注册: 2007-04-09 12:19
帖子: 119
送出感谢: 0 次
接收感谢: 0 次
我暂时只想到用python,把字符串变量当数组操作

用正则应该也可以吧


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-05-16 13:37 
头像

注册: 2007-07-04 21:54
帖子: 88
送出感谢: 0 次
接收感谢: 0 次
代码:
wen@atlas:~$ echo $a
030719212037
wen@atlas:~$ b=$(echo $a|fold -b2|sed 's/0\([0-9]\)/ \1/'|tr -d "\n")
wen@atlas:~$ echo "$b"
 3 719212037


_________________
Study or die.


页首
 用户资料  
 
4 楼 
 文章标题 : 帮帮我阿,我郁闷了好多天了!
帖子发表于 : 2008-05-16 18:24 

注册: 2008-03-22 1:19
帖子: 45
送出感谢: 0 次
接收感谢: 0 次
wen1987
看了你回复的帖子,十分感谢你,在这继续向你请教,因为我刚学SHELL不是太明白,呵呵,请不吝赐教.
我有个一个文本处理的文件内容如下:
0205032354@ -35.0000@108.0010@76.0006@12@0.0
现在需要将他们处理成如下格式:
@2@5@3@23@54@@-35.000@@108.001@@@76.001@@@12@@@0.0
其中@代表一个空格
换一种说法就是所:把原文件中的每字段放到固定的位置上去。这里0205032354代表02年05月03日23时54秒(即把0改成空格)然后在此之后-35.0000通过四舍五入取小数点后三为-35.000接着就填入到一个9个字符位置中去即@@-35.000同理108.0010也成为@@108.001和76.0006成为@@@76.001而12则填入随后的一个5个字符的位置,0.0填入一个6个字符的位置。
请问这位高手要怎么弄阿??


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-05-16 18:41 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
man date 的 strftime 部分

cut适合一点点的裁。printf也可以格式化。
grep带模式也可以格式化。


_________________
● 鸣学


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 帮帮我阿,我郁闷了好多天了!
帖子发表于 : 2008-05-16 20:15 

注册: 2007-04-09 12:19
帖子: 119
送出感谢: 0 次
接收感谢: 0 次
coldweb 写道:
wen1987
看了你回复的帖子,十分感谢你,在这继续向你请教,因为我刚学SHELL不是太明白,呵呵,请不吝赐教.
我有个一个文本处理的文件内容如下:
0205032354@ -35.0000@108.0010@76.0006@12@0.0
现在需要将他们处理成如下格式:
@2@5@3@23@54@@-35.000@@108.001@@@76.001@@@12@@@0.0
其中@代表一个空格
换一种说法就是所:把原文件中的每字段放到固定的位置上去。这里0205032354代表02年05月03日23时54秒(即把0改成空格)然后在此之后-35.0000通过四舍五入取小数点后三为-35.000接着就填入到一个9个字符位置中去即@@-35.000同理108.0010也成为@@108.001和76.0006成为@@@76.001而12则填入随后的一个5个字符的位置,0.0填入一个6个字符的位置。
请问这位高手要怎么弄阿??

楼上的wen1987和ee其实都已经给出方法了。

我的意见是用awk分割,然后把第一个字段用wen1987的方法处理,其余的用printf处理。
代码:
file=filename
awk -v date="`awk '{print $1}' $file | fold -b2 | sed 's/0\([0-9]\)/ \1/'|tr -d "\n"`" '{printf date"%9.3f%9.3f%9.3f%5d%6s\n",$2,$3,$4,$5,$6}'  $file


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 6 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译