如何从垂直名称值对集转换csv列表(水平)

时间:2010-02-11 21:30:06

标签: regex pattern-matching jedit

我有一个这样的清单:

GTPYANJ         695848
GTPYANJ         27811
FPORTAL3        432532

我想用正则表达式把它变成这个:

GTPYANJ,695848,27811
FPORTAL3,432532

建议?

2 个答案:

答案 0 :(得分:0)

Perl one-liner:

perl -e 'while(<>) { chomp; ($tag, $num) = split /\s+/; $tmp{$tag} .= ",$num"; } foreach $t (sort keys %tmp) { print $t.$tmp{$t}."\n" } '  myfile.txt

比试图将多遍正则表达式蹒跚而行很容易,这种正则表达式在你做对之前很可能会破坏几次,这取决于正在排序的数据,并且可能需要第二个正则表达式来重新格式化所有内容结束......

答案 1 :(得分:0)

加载到jEdit(或Notepad ++,或其他可通过正则表达式搜索/替换的编辑器。

步骤1是确保分隔符是一个标签。

然后,搜索

^(.*)\t(.*)\n\1

并将其替换为

$1\t$2,

重复查找/替换所有内容,直到找不到更多匹配项。