特定パターンの上の文字の変更

特定パターンの上の文字の変更

次のファイルがあります。

C        0.749421709   0.227878968   1.429202011   0.000039192  
C        1.632642695  -0.091443576   2.542631832  -0.000184939  
N        0.043615933   0.482209037   0.540453037   0.000123677   
H        2.515045687   0.527073165   2.500388888  -0.001989853   
H        1.941072900  -1.159598231   2.494001492   0.001039872   
H        1.143298831   0.111732200   3.499873978   0.001236466     

これはファイル全体で何度も繰り返されるパターンです。ファイル全体で「Cn」の「N」のすぐ上にある「C」を変更するだけです。 sedを使ってみましたが、どんなバリエーションも動作しないようです。パターンを探して上下にコンテンツを追加できますが、「C」を「Cn」に置き換えることはできません。

ベストアンサー1

1つの解決策:

tac file |
    awk '{if ($1=="C" && l=="N") $1="Cn"} {l=$1} 1' |
    tac |
    column -t

出力

C   0.749421709  0.227878968   1.429202011  0.000039192
Cn  1.632642695  -0.091443576  2.542631832  -0.000184939
N   0.043615933  0.482209037   0.540453037  0.000123677
H   2.515045687  0.527073165   2.500388888  -0.001989853
H   1.941072900  -1.159598231  2.494001492  0.001039872
H   1.143298831  0.111732200   3.499873978  0.001236466

おすすめ記事