いくつかの特定の行を除くすべてのフィールドにawkコマンドを適用する方法

いくつかの特定の行を除くすべてのフィールドにawkコマンドを適用する方法

156780行ごとにヘッダー行を持つファイルがあります。

ヘッダー行の2番目の列を除くすべての行の最初の列にawkコマンドを適用したいと思います。

あるいは、少なくともヘッダー行は影響を受けてはいけません。

誰もが私がこれを行うのを助けることができますか?

以下のようにawkコマンドを使用しました。

awk 'NR>2 {printf("%10i %15.8E\n",$1,$2);}' fort.74 > fort.75

ベストアンサー1

ヘッダー行は条件を満たしますNR % 156780 == 0。これは、以下が利用可能であることを意味します。

awk 'NR % 156780 != 0 { process non-header row }' ...

...またはおそらく

awk '(NR - 1) % 156780 != 0 { process non-header row }' ...

NR最初の行は0ではなく1です。)

ヘッダー行を影響なく渡すには、次のようにします。

awk '(NR - 1) % 156780 != 0 { process non-header row } (NR - 1) % 156780 == 0 { print }' ...

つまり、printヘッダーではなく行で使用される操作の反対の条件に対して別々の操作を追加するだけです。

おすすめ記事