Как преобразовать список csv (горизонтальный) из набора пар вертикальных значений имени - PullRequest
0 голосов
/ 12 февраля 2010

У меня есть такой список:

GTPYANJ         695848
GTPYANJ         27811
FPORTAL3        432532

Я хочу превратить это в регулярные выражения:

GTPYANJ,695848,27811
FPORTAL3,432532

Предложения

Ответы [ 2 ]

0 голосов
/ 12 февраля 2010

загрузка в jEdit (или Notepad ++, или в какой-либо другой редактор, который может искать / заменять через регулярные выражения.

Шаг 1 - убедиться, что разделитель является вкладкой.

Затем найдите

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

и замените его на

$1\t$2,

Повторяйте поиск / замену всех, пока больше не будет найдено совпадений.

0 голосов
/ 12 февраля 2010

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

Гораздо проще, чем пытаться скомбинировать многоходовое регулярное выражение, которое, скорее всего, сломается пару раз, прежде чем вы поймете правильно, и которое зависит от данных.сортируется, и для этого может потребоваться второе регулярное выражение для переформатирования всего в конце ...

...