Привет У меня есть текстовый файл, который нужно разобратьразобрать текстовый файл судится регулярных выражений в Perl
libA/cellA/view1/data.dm#1 - edit default
libA/cellA/view1/master.tag#1 - edit defau
libA/cellA/view1/sch.oa#1 - edit default c
libA/cellA/view1/thumbnail_128x128.png#1 -
libA/cellB/view1/data.dm#1 - edit default
libA/cellB/view1/master.tag#1 - edit defau
libA/cellB/view1/sch.oa#1 - edit default c
libA/cellB/view1/thumbnail_128x128.png#1 -
libA/cellB/symbol/master.tag#1 - edit defa
libA/cellB/symbol/symbol.oa#1 - edit defau
libA/cellB/symbol/thumbnail_128x128.png#1
libA/cellC/view1/data.dm#1 - edit default
libA/cellC/view1/master.tag#1 - edit defau
libA/cellC/view1/sch.oa#1 - edit default c
libA/cellC/view1/thumbnail_128x128.png#1 -
libA/cellD/veriloga/data.dm#1 - edit defau
libA/cellD/veriloga/master.tag#1 - edit de
libA/cellD/veriloga/netlist.oa#1 - edit de
libA/cellD/veriloga/veriloga.va#1 - edit d
libA/cellE/view1/data.dm#1 - edit default
libA/cellE/view1/master.tag#1 - edit defau
Шаг1: В выше текстового файла я только хочу, чтобы сохранить текст до третьего вхождение в символ «/». например, выход должен быть, как показано ниже:
libA/cellA/view1
libA/cellA/view1
libA/cellA/view1
libA/cellA/view1
libA/cellB/view1
libA/cellB/view1
libA/cellB/view1
libA/cellB/view1
libA/cellB/view2
libA/cellB/view2
libA/cellB/view2
libA/cellC/view1
libA/cellC/view1
libA/cellC/view1
libA/cellC/view1
libA/cellD/view3
libA/cellD/view3
libA/cellD/view3
libA/cellD/view3
libA/cellE/view1
libA/cellE/view1
Setp2: Тогда я хотел бы, чтобы удалить повторяющиеся строки сохранить пустую строку между ними:
libA/cellA/view1
libA/cellB/view1
libA/cellB/view2
libA/cellC/view1
libA/cellD/view3
libA/cellE/view1
любой указатель на то, как сделать это в Perl? я что-то вроде этого пытается:
#!/usr/bin/perl
# File: parse.pl
unless (open(MYFILE, "sample.txt"))
{
die ("cannot open input file file1\n");
}
unless (open(OUTFILE, ">outfile.txt"))
{
die ("cannot open output file outfile\n");
}
# if the program gets this far, the file was
# opened successfully
$line = <MYFILE>;
while ($line ne "")
{
#print ($line);
my ($lib, $cell, $view) = split /:/, $line;
#print "$lib\n";
#print "$cell\n";
#print "$view\n";
print OUTFILE ($lib/$cell/$view/n);
$line = <MYFILE>;
}
Вы хотите 'split' и хэш, а не регулярное выражение. что ты уже испробовал? –
Не могу ли я использовать регулярное выражение и ничего не заменить после появления третьего символа '/'? – sanforyou
Вы можете, но не должны. Это не просто '/' --- это тоже все, что находится между косами, которые вы хотите сохранить. Кроме того, ваш пример вывода даже правильный? Похоже, что для 'libA/cellC/view1' все еще существуют повторяющиеся строки. –