在perl中查找并替换为带格式的字符串

时间:2013-12-04 12:17:17

标签: string perl replace find formatted

我有一个看起来像这样的文件:

MYFILE

Hello     World
Hello     World
Hello     World
Hello
Hello
Hello     World
Hello     World

我想要做的是找到并替换文件中任何一行,其中只有单词“Hello”,字符串为“Hello World”,保持间距与文件中已有的相同(假设为10)字符宽度从H到W)。

到目前为止我所拥有的:

perl -pi -e 's/Hello/Hello World/' myFile

我知道我没有走远,但我已经谷歌搜索了很长一段时间,无法弄清楚我需要做什么..

非常感谢任何帮助!!谢谢!

2 个答案:

答案 0 :(得分:3)

perl -i -pe '$t=$1 and next if /Hello(\s+)World/; s/Hello\K/${t}World/' myFile

答案 1 :(得分:1)

您必须指定字符串在“Hello”之后结束:

perl -pi -e 's/Hello$/Hello          World/' myFile