现在有一堆数据,格式是这样
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!
[求助] awk脚本编写[已解决]
-
- 帖子: 31
- 注册时间: 2008-02-06 13:24
[求助] awk脚本编写[已解决]
上次由 feisuzhu 在 2009-02-14 17:39,总共编辑 1 次。
-
- 帖子: 29
- 注册时间: 2007-04-27 23:22
Re: [求助] awk脚本编写
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 '/'
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 '/'
-
- 帖子: 31
- 注册时间: 2008-02-06 13:24
Re: [求助] awk脚本编写
谢谢楼上的
自己写的Perl版,本来以为又没人理我呢了……
自己写的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";
}
}
-
- 帖子: 31
- 注册时间: 2008-02-06 13:24
Re: [求助] awk脚本编写
2楼的命令看懂了
把每一行拆成3部分,
1 foo bar
2 foo1/foo2/bar1/bar2
3 foobar barfoo
然后把第2部分的每一个 foo1 , foo2 , .... 替换成 <第一部分 foo1 第2部分> , <第一部分 foo2 第2部分> ....
最后用tr 删掉/
精彩!
虽然不太认同这种方式,但是edifie的努力和关注再次表示感谢!
把每一行拆成3部分,
1 foo bar
2 foo1/foo2/bar1/bar2
3 foobar barfoo
然后把第2部分的每一个 foo1 , foo2 , .... 替换成 <第一部分 foo1 第2部分> , <第一部分 foo2 第2部分> ....
最后用tr 删掉/
精彩!
虽然不太认同这种方式,但是edifie的努力和关注再次表示感谢!
-
- 帖子: 31
- 注册时间: 2008-02-06 13:24
Re: [求助] awk脚本编写
对了,还是期待awk的脚本……
PS:上次学校给了个1000行+的xls,就让我干这个……如果只是干这个,VBA真TMD难用……
PS:上次学校给了个1000行+的xls,就让我干这个……如果只是干这个,VBA真TMD难用……
-
- 帖子: 1453
- 注册时间: 2008-05-24 8:30
Re: [求助] awk脚本编写
代码: 全选
#!/usr/bin/awk -f
{
split($3, A, "/");
for( f in A ) {
print $1, $2, A[f], $4, $5;
}
}
- xiooli
- 帖子: 6956
- 注册时间: 2007-11-19 21:51
- 来自: 成都
- 联系:
Re: [求助] awk脚本编写
笨办法:
代码: 全选
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
-
- 帖子: 31
- 注册时间: 2008-02-06 13:24
Re: [求助] awk脚本编写
谢谢6楼的aerofox!测试成功!
也同样谢谢xiooli!
也同样谢谢xiooli!