这是我在这个论坛上的第一个问题:)。
我有一个类似文件:
----File--------
XI39/XM79 XI39/XM79#G XI39/XM79#S XI39/XM79#D XI39/XM79#B XI39/XM79#DN append_text!
+ search_pattern
+ w=5e-07 l=3.85e-07 sa=4.1e-07 sb=4.1e-07 ad=2.05e-13 as=2.05e-13 pd=1.82e-06
XI57/XM0@1 XI57/XM0@1#G XI57/XM0@1#S XI57/XM0@1#D XI57/XM0@1#B XI57/XM0@1#DN
+ search_pattern
+ w=1e-06 l=3.85e-07 sa=4.1e-07 sb=1.215e-06 ad=2.1e-13 as=4.1e-13 pd=1.42e-06
我想搜索“ search_pattern”,如果找到,请看上面的一行并附加“ append_text!”如果不存在,则在行尾。
所以输出文件应该是:-
------------输出文件------
XI39/XM79 XI39/XM79#G XI39/XM79#S XI39/XM79#D XI39/XM79#B XI39/XM79#DN **append_text**!
+ **search_pattern**
+ w=5e-07 l=3.85e-07 sa=4.1e-07 sb=4.1e-07 ad=2.05e-13 as=2.05e-13 pd=1.82e-06
XI57/XM0@1 XI57/XM0@1#G XI57/XM0@1#S XI57/XM0@1#D XI57/XM0@1#B XI57/XM0@1#DN **append_text**!
+ **search_pattern**
+ w=1e-06 l=3.85e-07 sa=4.1e-07 sb=1.215e-06 ad=2.1e-13 as=4.1e-13 pd=1.42e-06
我有点了解perl,因此可以执行文件操作,但是在模式匹配方面一点都不好。任何指针都会有所帮助。
while(<Your filehandle name>)
{
if ($string =~ m/search_pattern/g)
{
$_=~ s/append_text/**append_text**/g;
}
close(filehandle name)