假设我有这种文件:
248
STEP: 1
C 0.975156 8.208886 -0.860474
C 1.519935 8.610952 0.374438
C 1.771419 9.990898 0.592491
C 1.418414 10.881772 -0.466490
248
STEP: 6
C 0.985225 8.205446 -0.859378
C 1.520091 8.611807 0.372435
C 1.775156 9.991095 0.588109
C 1.415878 10.886006 -0.465814
~1500000行
我需要像这样:
248
STEP: 1
C 0.975156 8.208886 -0.860474
C 1.519935 8.610952 0.374438
D 1.771419 9.990898 0.592491
C 1.418414 10.881772 -0.466490
248
STEP: 6
C 0.985225 8.205446 -0.859378
C 1.520091 8.611807 0.372435
D 1.775156 9.991095 0.588109
C 1.415878 10.886006 -0.465814
我怎么能用awk / sed / what来实现这个目标?
答案 0 :(得分:1)
awk
救援!
$ awk '/^ STEP/{c=0} /^ C/ && ++c==3{sub(/C/,"D")}1' file
或倒计时
$ awk '/^ STEP/{c=3} /^ C/ && !--c{sub(/C/,"D")}1' file
如果您的文件没有前导空格,也可以从模式中删除它们。在上面的发布文件中,您可以使用它们。