Пошук та заміна частин за початковою та кінцевою точками (поряд із поверненим внутрішнім номером)


1

Мені доводиться працювати над дійсно старим кодом, який повторюється дуже часто. Отож, намагаючись зрозуміти це, я зіткнувся з цією проблемою через монументальний масштаб всього цього.

<A>
   hello! my inside contents can vary
   5
</A>

Я не думаю, що для цього є розумний спосіб, але я хочу замінити цілісність A і залишити позаду

blah(x)

Де х - перше число, знайдене всередині А.

Відповіді:


0

Слід виконати сценарій perl.

#! /usr/bin/env perl
# ------------------------------------------------
# Author:    krishna
# Created:   Sat Sep 22 09:50:06 2018 IST
# USAGE:
#       process.pl
# Description:
# 
# 
# ------------------------------------------------
$num = undef;

# Process the first argument as file and read the lines into $_
while (<>) {
  # remove newline at the end
  chomp;

  # True for all lines between the tag A
  if (/<A>/ ... /<\/A>/) {
    # Only when num is not defined, Capture only first occurance of a number
    $num = $& if not defined $num and /\d+/;
  } else {
    # Print other lines as it is
    printf "$_\n";
  }

  # After processing the tag, print the number and set to undef to capture next occurance
  if (/<\/A>/) {
    printf "blah($num)\n";
    $num = undef;
  }
}

Бігти

0 > perl ./process.pl file
blah(5)

blaaaaaaaaaa

blah(50)

де fileвміст

0 > cat file
<A>
   hello! my inside contents can vary
   5
   505
</A>

blaaaaaaaaaa

<A>
   hello! my inside contents can vary
   50
</A>

HTH

Крішна

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.