sh/bash/dash/ksh/zsh等Shell脚本
-
coldweb
- 帖子: 45
- 注册时间: 2008-03-22 1:19
-
联系:
#1
帖子
由 coldweb » 2008-06-04 14:29
文件名test
内容:
117 21.88 1
119 21.39 1
120 20.90 1
121 22.54 1
124 22.21 1
125 21.72 1
127 22.54 1
129 22.05 1
131 22.86 1
132 23.35 1
处理结果如下格式:
117 21.88 1119 21.39 1120 20.90 1121 22.54 1124 22.21 1125 21.72 1
127 22.54 1129 22.05 1131 22.86 1132 23.35 1 @@ [email protected]@0 @@ [email protected]
即将原文件的每行都连起来,合成一行显示六个,然后不足的用 @@
[email protected] @0补上。其中@表示空格,其具体格式如下
(说明:例117 21.88 1即为117和21.88和1的组合,其格式为%3d%5.2f%2d)
-
roylez
- 帖子: 1928
- 注册时间: 2005-10-04 10:59
- 来自: 上海
#2
帖子
由 roylez » 2008-06-04 16:18
其实完全可以用vim解决。我现在在windows底下,命令没测试过。
"J"是把两行连接起来,"5J"合并6行。"."是重复上次编辑。所以你大概可以用这样的组合:5Jj.j.j.
剩下就是补个没全的东西了。
如果J合并之后多了个空格,你就需要写macro了。
-
Strange
- 帖子: 1824
- 注册时间: 2006-05-19 9:54
- 来自: Shanghai
#4
帖子
由 Strange » 2008-06-04 17:09
感觉lz到这里来是来完成工作的
ニンニク入れますか?
x60 with gentoo
-
millenniumdark
- 论坛版主
- 帖子: 4159
- 注册时间: 2005-07-02 14:41
- 系统: Ubuntu 14.04 (Kylin)
-
联系:
#5
帖子
由 millenniumdark » 2008-06-04 17:38
Strange 写了:感觉lz到这里来是来完成工作的
同感。
樓主既然經常面對字符串處理的東東,還是學學grep|sed|awk|perl|python比較好。
-
fatcat
- 帖子: 10
- 注册时间: 2008-06-11 14:13
#6
帖子
由 fatcat » 2008-06-14 3:11
创建文件proc.awk
代码: 全选
BEGIN{
i=0;
}
{
printf("%3d%6.2f%2d",$1,$2,$3);
i=i+1;
if(i>=6){
printf("\n");
i=0;
}
}
END{
for(;i<6;i++){
printf("%3d%6.2f%2d",0,0,0);
}
printf("\n");
}
执行命令:
代码: 全选
awk -f proc.awk source
其中source是你要处理的文件
-
星星电灯
- 帖子: 1
- 注册时间: 2008-07-05 18:03
#7
帖子
由 星星电灯 » 2008-07-05 18:05
cat cc1.txt | awk 'BEGIN {ORS="\t"} {print $0;if(NR%6==0) printf("\n")} END {total=NR; while(total%6!=0) {printf(" 0 0.00 0");total++};printf("\n")}'