การค้นหาและการเปลี่ยนบางส่วนโดยจุดเริ่มต้นและจุดสิ้นสุด (ควบคู่ไปกับตัวเลขการย้อนกลับภายใน)


1

ฉันต้องทำงานผ่านโค้ดเก่า ๆ ที่ใช้ซ้ำบ่อยๆ ดังนั้นในการพยายามที่จะเคลียร์มันฉันเจอปัญหานี้เนื่องจากมาตราส่วนของมันทั้งหมด

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

ฉันไม่คิดว่าจะมีวิธีที่สมเหตุสมผลในการทำเช่นนี้ แต่ฉันต้องการแทนที่ทั้งหมดของ A และทิ้งไว้เบื้องหลัง

blah(x)

โดยที่ x คือตัวเลขแรกที่พบภายในของ A

คำตอบ:


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

กฤษณะ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.