免费注册 查看新帖 |

Chinaunix

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

awk 分类文件帮忙,高手帮忙了 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-04-01 16:04 |只看该作者
awk 'a[$3--$4--$5]++;if(a[$3--$4--$5]>1000){b++;a[$3--$4--$5]=0};{print $1,$2 >"file"$3"-"$4"-"$5"-"b}' txet.txt
awk: Syntax error
at line 1 of program << a[$3--$4--$5]++;if(a ... >>
context is
         >>> a[$3--$4--$5]++;if <<< (a[$3--$4--$5]>1000){b++;a[$3--$4--$5]=0};{p
rint $1,$2 >"file"$3"-"$4"-"$5"-"b}
awk: bailing out
at line 1 of program << a[$3--$4--$5]++;if(a ... >>

论坛徽章:
0
12 [报告]
发表于 2008-04-01 16:19 |只看该作者
原帖由 nuclearxin 于 2008-4-1 16:06 发表

awk '{a[$3--$4--$5]++;if(a[$3--$4--$5]>1000){b++;a[$3--$4--$5]=0};{print $1,$2 >"file"$3"-"$4"-"$5"-"b}}'
外层 在加个大括号

一样的错误

论坛徽章:
0
13 [报告]
发表于 2008-04-01 16:22 |只看该作者
原帖由 寂寞烈火 于 2008-4-1 15:52 发表
awk '{print $1,$2 >"file"$3$4$5}' ur-file

也有错误,而且没有做每1000行分开

论坛徽章:
0
14 [报告]
发表于 2008-04-01 16:38 |只看该作者
原帖由 nuclearxin 于 2008-4-1 16:33 发表
awk '{a[$3--$4--$5]++;if(a[$3--$4--$5]>1000){b[$3--$4--$5]++;a[$3--$4--$5]=0};{print $1,$2 >"file"$3"-"$4"-"$5"-"b[$3--$4--$5]}}'


照你的复制也有错误

论坛徽章:
0
15 [报告]
发表于 2008-04-01 16:41 |只看该作者
  1. awk '{a[$3-$4-$5]++;if(a[$3-$4-$5]>1000){b[$3-$4-$5]++;a[$3-$4-$5]=0};{print $1,$2 >"file"$3"-"$4"-"$5"-"b[$3-$4-$5]}}'
复制代码

[ 本帖最后由 nuclearxin 于 2008-4-1 16:42 编辑 ]

论坛徽章:
0
16 [报告]
发表于 2008-04-01 16:50 |只看该作者
原帖由 nuclearxin 于 2008-4-1 16:41 发表
awk '{a[$3-$4-$5]++;if(a[$3-$4-$5]>1000){b[$3-$4-$5]++;a[$3-$4-$5]=0};{print $1,$2 >"file"$3"-"$4"-"$5"-"b[$3-$4-$5]}}'

再次复制 还是错误 我的是sco unix 5.05  /bin/ksh
看来只能用循环语句分了

论坛徽章:
0
17 [报告]
发表于 2008-04-01 16:53 |只看该作者
b数组没有初始化所以开始的文件 很奇怪有个以-结尾
试试下面的
  1. awk '{if(b[$3-$4-$5]==""){b[$3-$4-$5]=1};a[$3-$4-$5]++;if(a[$3-$4-$5]>1000){b[$3-$4-$5]++;a[$3-$4-$5]=0};{print $1,$2 >"file"$3"-"$4"-"$5"-"b[$3-$4-$5]}}'
复制代码

论坛徽章:
0
18 [报告]
发表于 2008-04-01 17:08 |只看该作者
原帖由 nuclearxin 于 2008-4-1 16:53 发表
b数组没有初始化所以开始的文件 很奇怪有个以-结尾
试试下面的
awk '{if(b[$3-$4-$5]==""){b[$3-$4-$5]=1};a[$3-$4-$5]++;if(a[$3-$4-$5]>1000){b[$3-$4-$5]++;a[$3-$4-$5]=0};{print $1,$2 >"file"$3"-"$4"- ...

复制运行错误
然后
我把它分开
#!/bin/ksh
set -x
awk '{
if(b[$3-$4-$5]=="")
{
b[$3-$4-$5]=1
};a[$3-$4-$5]++
if(a[$3-$4-$5]>1000){
b[$3-$4-$5]++;a[$3-$4-$5]=0}
{
print $1,$2 >"file"$3"-"$4"-"$5"-"b[$3-$4-$5]
}
}'  text.txt

运行如下
+ awk {
if(b[$3-$4-$5]=="")
{
b[$3-$4-$5]=1
};a[$3-$4-$5]++
if(a[$3-$4-$5]>1000){
b[$3-$4-$5]++;a[$3-$4-$5]=0}
{
print $1,$2 >"file"$3"-"$4"-"$5"-"b[$3-$4-$5]
}
} text.txt
awk: Syntax error
at line 9 of program << {
if(b[$3-$4-$5]=="" ... >>
context is
        print $1,$2 >>>  >"file"$3 <<< "-"$4"-"$5"-"b[$3-$4-$5]
awk: illegal statement
at line 9 of program << {
if(b[$3-$4-$5]=="" ... >>


请问 set -x 能不能放在awk 里面

[ 本帖最后由 liujuejun 于 2008-4-1 17:12 编辑 ]

论坛徽章:
0
19 [报告]
发表于 2008-04-01 17:33 |只看该作者
awk '{b[substr($3,1,1)substr($4,1,1)substr($5,1,2)]++;aa=b[substr($3,1,1)substr($4,1,1)substr($5,1,2)]-b[substr($3,1,1)substr($4,1,1)substr($5,1,2)]%1000+1000;txt="tmp/file"substr($3,1,1)substr($4,1,1)substr($5,1,2)""aa".txt";print $1,$2>txt; print txt>"tmp/file.log"}'  text.txt

我自己弄成功了,而且打印了一个文件日志

[ 本帖最后由 liujuejun 于 2008-4-1 17:35 编辑 ]

论坛徽章:
0
20 [报告]
发表于 2008-04-01 17:40 |只看该作者
谢谢 nuclearxin 让你劳心了
数组里是不是不能含有多个$
a[$3$4$5]好象不行哦

[ 本帖最后由 liujuejun 于 2008-4-1 17:43 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP