0

如果基于一行的前 10 个字符,我正在寻找一些帮助来替换特定字符。例如:

如果线路是

test  (    2 ) [123456789]

我想用

test  (    2 ) [123MMM789]

即,如果该行以将第test ( 2 )19、20、21 列替换为 M

如果该行以其他任何内容开头,则可以保持原样。先感谢您!

4

1 回答 1

2

您可以使用匹配和substr

while (<>) {
  substr($_, 19, 3) = 'MMM' if /^test  \(    2 \)/;
  print;
}

这也可以直接应用于命令行,因为它非常简单:

$ perl -pe 'substr($_, 19, 3) = "MMM" if /^test  \(    2 \)/' file.txt
于 2012-11-12T22:51:01.497 回答