簡體   English   中英

如何使用awk每隔n行更改一個字符?

[英]How can I change a character in line every n lines using awk?

假設我有這種文件:

         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 /任何東西來實現呢?

awk解救!

$ awk '/^ STEP/{c=0}  /^ C/ && ++c==3{sub(/C/,"D")}1' file

或倒數計時

$ awk '/^ STEP/{c=3} /^ C/ && !--c{sub(/C/,"D")}1' file

如果您的文件中沒有前導空格,請將其也從模式中刪除。 在上面發布的文件中,您有它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM