Chinaunix
标题:
对文件按列进行重排
[打印本页]
作者:
junlingpang
时间:
2011-06-14 11:03
标题:
对文件按列进行重排
有一文件,列与列间tab分隔,现想将文件的列顺序改变一下
比如原来的各列编号为1,2,3,4,5 现在想变成1,3,5,2,4
linux下有没有什么简单的命令啊?
我开始想用cut -f 1,3,5,2,4 ,结果顺序没变~
应该是件很简单的事情,望各位指教哇
作者:
iamlimeng
时间:
2011-06-14 11:10
@col = split(/\t/,$line);
print "$col[0]\t$col[2]\t$col[4]\t$col[1]\t$col[3]\n";
作者:
wxlfh
时间:
2011-06-14 11:18
本帖最后由 wxlfh 于 2011-06-14 11:19 编辑
use strict;
open my $fh, "<","your_file";
open my $out,">","out_file";
while (<$fh>) {
chomp;
print $out join("\t",(split /\t/)[0,2,4,1,3]),"\n";
}
close $fh;
close $out;
复制代码
作者:
junlingpang
时间:
2011-06-14 11:18
回复
2#
iamlimeng
Thank you~
作者:
junlingpang
时间:
2011-06-14 11:20
回复
3#
wxlfh
学习了,谢谢
作者:
zhlong8
时间:
2011-06-14 11:26
本帖最后由 zhlong8 于 2011-06-14 11:28 编辑
把三楼代码改成一行的
perl -lne "BEGIN{$,=qq{\t}} print (split /\t/)[0,2,4,1,3]" file
作者:
sudegj
时间:
2011-06-14 11:28
学习中
作者:
junlingpang
时间:
2011-06-14 11:32
回复
6#
zhlong8
够简洁!多谢多谢~
对了,大侠给我推荐下类似的学习资料吧,谢了
作者:
zhlong8
时间:
2011-06-14 12:01
单行程序就看下 Perlrun 了解下 alnpe 这几个参数,然后看几个别人的代码就行了
作者:
junlingpang
时间:
2011-06-14 12:07
回复
9#
zhlong8
好的,谢了
作者:
jason680
时间:
2011-06-14 12:10
本帖最后由 jason680 于 2011-06-14 12:13 编辑
有一文件,列与列间tab分隔,现想将文件的列顺序改变一下
比如原来的各列编号为1,2,3,4,5 现在想变成1,3,5 ...
junlingpang 发表于 2011-06-14 11:03
$ echo -e "1\t2\t3\t4\t5"
1 2 3 4 5
$ echo -e "1\t2\t3\t4\t5" | awk -v OFS="\t" '{print $1,$3,$5,$2,$4}'
1 3 5 2 4
作者:
RE_HASH
时间:
2011-06-14 14:06
$> echo '1 2 3 4 5' |perl -anpe '$_= join "\t", @F[0,2,4,1,3];s/\n//g;'
1 3 5 2 4
作者:
springwind426
时间:
2011-06-14 14:30
echo -e '1\t2\t3\t4\t5' | perl -npe 's/(.+)\t(.+)\t(.+)\t(.+)\t(.+)/\1\t\3\t\5\t\2\t\4/'
复制代码
作者:
huycwork
时间:
2011-06-16 12:53
tr '12345' '13524'
复制代码
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2