用于替换Column中字符的脚本

时间:2012-11-12 22:41:21

标签: perl shell

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

如果该行

test  (    2 ) [123456789]

我想用

替换它
test  (    2 ) [123MMM789]

即,如果该行以test ( 2 )开头,则用M

替换第19,20,21列

如果该行以其他任何东西开头,则可以保留原样。提前谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用匹配和substr

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

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

$ perl -pe 'substr($_, 19, 3) = "MMM" if /^test  \(    2 \)/' file.txt