分页: 1 / 1
[求助] awk脚本编写[已解决]
发表于 : 2009-02-13 16:40
由 feisuzhu
现在有一堆数据,格式是这样
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!
Re: [求助] awk脚本编写
发表于 : 2009-02-13 17:24
由 edifie
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 '/'
Re: [求助] awk脚本编写
发表于 : 2009-02-13 17:50
由 feisuzhu
谢谢楼上的
自己写的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";
}
}
Re: [求助] awk脚本编写
发表于 : 2009-02-13 18:03
由 feisuzhu
2楼的命令看懂了
把每一行拆成3部分,
1 foo bar
2 foo1/foo2/bar1/bar2
3 foobar barfoo
然后把第2部分的每一个 foo1 , foo2 , .... 替换成 <第一部分 foo1 第2部分> , <第一部分 foo2 第2部分> ....
最后用tr 删掉/
精彩!
虽然不太认同这种方式,但是edifie的努力和关注再次表示感谢!
Re: [求助] awk脚本编写
发表于 : 2009-02-13 18:08
由 feisuzhu
对了,还是期待awk的脚本……
PS:上次学校给了个1000行+的xls,就让我干这个……如果只是干这个,VBA真TMD难用……
Re: [求助] awk脚本编写
发表于 : 2009-02-13 20:46
由 aerofox
代码: 全选
#!/usr/bin/awk -f
{
split($3, A, "/");
for( f in A ) {
print $1, $2, A[f], $4, $5;
}
}
Re: [求助] awk脚本编写
发表于 : 2009-02-13 21:38
由 xiooli
笨办法:
代码: 全选
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
Re: [求助] awk脚本编写
发表于 : 2009-02-14 17:34
由 feisuzhu
谢谢6楼的aerofox!测试成功!
也同样谢谢xiooli!