Я хочу заменить несколько регулярных выражений, перечисленных в файле карты, регулярным выражением, перечисленным в том же файле карты, разделенным ":" или каким-либо другим разделителем.
Я хочу выполнить все эти подстановки во входном CSV файл и создать выходной файл со всеми этими заменами. Итак, у меня есть 2 входа и 1 выходной файл. Например,
1.) Отображение содержимого файла, например,
GMA C (\ d +) _ RMII_REF_CLK_O: GMAC $ 1_RMII_REF_CLKO GMA C (\ d +) _ RMII_REF_CLK_I: GMAC $ 1_RI_RE \ d +)]: SPI $ 1, SPI (\ d +),:, SPI $ 1_SPI $ 1, LIN (\ d +),:, UART_ $ 1_UART $ 1, LIN (\ d +) _ TX: TXD
2 .) Входной файл содержимого, GMAC0_RMII_REF_CLK_O, GMAC_0,, O, GMAC0_RMII_REF_CLK_I, GMAC_0,, I, GMAC1_RMII_REF_CLK_O, GMAC_1, O, GMAC1_RMII_REF, LINK, LINK, II, DI, IF, CLI , O,
3.) Мой выходной файл должен иметь следующее содержимое: GMAC0_RMII_REF_CLKO, GMAC_0,, O, GMAC0_RMII_REF_CLKI, GMAC_0, I, GMAC1_RMII_REF_CLKO, GMAC_1, O_M_RE_F, GM_1, GM_1, GM_1, GM_1, GM_1 Я,, SPI2_SOUT, SPI2_SPI2,, O,
, TXD, UART_1_UART1,, O,
Я не хочу жестко задавать свой сценарий для всех аналогичных замен. Регулярные выражения в файле сопоставления могут быть определены пользователем.
Я пытаюсь ниже код, который не работает:
my $io_data = read_file($IO_Signal_Table);
my $in_data = read_file($Input_Muxing);
open(MAP_FILE,"$map_file") || die "Can't open $map_file for reading $!";
while (my $line = <MAP_FILE>) {
chomp($line);
my @content = split(":",$line);
my $content0 = qr/$content[0]/;
my $content1 = qr/$content[1]/;
# print "\n $content0 $content1 ";
$io_data =~ s/$content0/$content1/g;
$in_data =~ s/$content0/$content1/g;
# $io_data =~ s/$content[0]/$content[1]/g;
# $in_data =~ s/$content[0]/$content[1]/g;
}
close(MAP_FILE);
write_file($IO_Signal_Table_mod,$io_data);
write_file($Input_Muxing_mod,$in_data);
PS: я использую perl. Я мог видеть все это в скрипте, но не нашел пример, где он читает регулярные выражения замещения из файла, как мне нужно. Я в основном избегаю сценария команды gvim для замены, используя perl. Я использую perl на redhat linux v5.12.2.