当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 8 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [求助] awk脚本编写[已解决]
帖子发表于 : 2009-02-13 16:40 

注册: 2008-02-06 13:24
帖子: 31
送出感谢: 0 次
接收感谢: 0 次
现在有一堆数据,格式是这样

foo bar foo1/foo2/bar1/bar2 foobar barfoo
...

想要把他扩展成

foo bar foo1 foobar barfoo
foo bar foo2 foobar barfoo
foo bar bar1 foobar barfoo
foo bar bar2 foobar barfoo
....


请问一下,awk脚本改怎么写?

如果awk不方便,bash 或者 perl 都可以

答案在6楼
感谢aerofox!


最后由 feisuzhu 编辑于 2009-02-14 17:39,总共编辑了 1 次

页首
 用户资料  
 
2 楼 
 文章标题 : Re: [求助] awk脚本编写
帖子发表于 : 2009-02-13 17:24 

注册: 2007-04-27 23:22
帖子: 29
送出感谢: 0 次
接收感谢: 0 次
line='foo bar foo1/foo2/bar1/bar2 foobar barfoo'
i=`echo $line | cut -d ' ' -f1,2`
j=`echo $line | cut -d ' ' -f4,5`
echo $line | cut -d ' ' -f3 | sed "s/\([^/]*\)/$i \1 $j\n/g" | tr -d '/'


页首
 用户资料  
 
3 楼 
 文章标题 : Re: [求助] awk脚本编写
帖子发表于 : 2009-02-13 17:50 

注册: 2008-02-06 13:24
帖子: 31
送出感谢: 0 次
接收感谢: 0 次
谢谢楼上的 :em11

自己写的Perl版,本来以为又没人理我呢了……

代码:
#!/usr/bin/perl -w
while(<>)
{
   ($a,$b,$c,$d,$e)=split(' ',$_,-1);
   @foo=split('/',$c);
   for($i=0;$i<@foo;$i++)
   {
      print "$a $b $foo[$i] $d $e\n";
   }
}



页首
 用户资料  
 
4 楼 
 文章标题 : Re: [求助] awk脚本编写
帖子发表于 : 2009-02-13 18:03 

注册: 2008-02-06 13:24
帖子: 31
送出感谢: 0 次
接收感谢: 0 次
2楼的命令看懂了

把每一行拆成3部分,

1 foo bar
2 foo1/foo2/bar1/bar2
3 foobar barfoo

然后把第2部分的每一个 foo1 , foo2 , .... 替换成 <第一部分 foo1 第2部分> , <第一部分 foo2 第2部分> ....
最后用tr 删掉/

精彩!
虽然不太认同这种方式,但是edifie的努力和关注再次表示感谢!


页首
 用户资料  
 
5 楼 
 文章标题 : Re: [求助] awk脚本编写
帖子发表于 : 2009-02-13 18:08 

注册: 2008-02-06 13:24
帖子: 31
送出感谢: 0 次
接收感谢: 0 次
对了,还是期待awk的脚本……

PS:上次学校给了个1000行+的xls,就让我干这个……如果只是干这个,VBA真TMD难用……


页首
 用户资料  
 
6 楼 
 文章标题 : Re: [求助] awk脚本编写
帖子发表于 : 2009-02-13 20:46 

注册: 2008-05-24 8:30
帖子: 1453
送出感谢: 2
接收感谢: 30
代码:
#!/usr/bin/awk -f
{
    split($3, A, "/");
    for( f in A ) {
   print $1, $2, A[f], $4, $5;
    }
}


页首
 用户资料  
 
7 楼 
 文章标题 : Re: [求助] awk脚本编写
帖子发表于 : 2009-02-13 21:38 
头像

注册: 2007-11-19 21:51
帖子: 6956
地址: 成都
送出感谢: 0 次
接收感谢: 4
笨办法:
代码:
cat file|while read line;do i=`echo $line | cut -d ' ' -f1,2`;j=`echo $line | cut -d '' -f4,5`;echo $line|sed "s/\//@\n@/g"|sed "s/^@/$i /;s/@$/ $j/";done


页首
 用户资料  
 
8 楼 
 文章标题 : Re: [求助] awk脚本编写
帖子发表于 : 2009-02-14 17:34 

注册: 2008-02-06 13:24
帖子: 31
送出感谢: 0 次
接收感谢: 0 次
谢谢6楼的aerofox!测试成功!
也同样谢谢xiooli!


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

当前时区为 UTC + 8 小时


在线用户

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


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

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

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