$ NAME : corry
$$.Inc s d
$$.Oc s
$$.TO
G1 ty n1 EE EE M T1 T2 $$SRU
G2 n1 y OO OO M T3 T4 $$SRU
.EON
$ NAME : patrick
$$.Inc c d
$$.Oc c
$$.TO
G1 td n3 EE EE M T5 T6 $$SRU
G2 n3 y OO OO M T7 T8 $$SRU
.EON
$ NAME : danny
$$.Inc a b
$$.Oc b
$$.TO
@lc1 corry
@lc2 patrick
1 to n0 EE EE M S1 S2 $$SRU
G2 n0 y OO OO M S3 S4 $$SRU
.EON
$ NAME : sandy
$$.Inc m n
$$.Oc n
$$.TO
G1 te n1 EE EE M b1 b2 $$SRU
G2 n1 o OO OO M b3 b4 $$SRU
.EON
$ NAME : manager
$$.Inc o e
$$.Oc e
$$.TO
@lc3 danny
@lc4 sandy
G1o ty n1 EE EE M T1 T2 $$SRU
G2o n1 y OO OO M T3 T4 $$SRU
.EON
如何在特定范围内搜索某种模式?例如,我想在G1o
部分到$ Name : manager
部分之间的范围内搜索End of name (.EON)
,并将其替换为G1o.corry.n
。
答案 0 :(得分:1)
perl -pe 's/G1o/G1o.corry.n/ if /\$ NAME : manager/ .. /\.EON/' file
来自perlop文档:
在标量上下文中,“..”返回一个布尔值。运算符是双稳态的,就像一个触发器,并模拟sed,awk和各种编辑器的行范围(逗号)运算符。每个“..”运算符都保持自己的布尔状态,甚至在调用包含它的子例程时也是如此。只要其左操作数为假,它就是假的。
答案 1 :(得分:0)
sed '/^\$ NAME : manager/,/\.EON/s/G1o/G1o.corry.n/'