AWK:列の内容を書き換えますが、ヘッダーを保持する方法

AWK:列の内容を書き換えますが、ヘッダーを保持する方法

サーバーにアップロードする前に操作する必要がある非常に大きなデータセットがあります。ファイルの内容はcsv形式で、データがアップロードデータベースと一致するようにヘッダーを保存する必要があります。

特定の列の値を変更する方法を検索したところ、次のことがわかりました。

awk -F, '{$467=0 ; print $467}'

しかし、これは列ヘッダーを上書きします。列ヘッダーをオーバーライドせずにこれを行う方法はありますか? ? ?

ベストアンサー1

これにより、最初の行が保存され、467フィールドのすべての値が変更されます。

awk -F, 'NR>1 {$467=0}1' OFS=, file

NR これまでに見た入力レコードの総数(行番号)

awkのすべては条件付き{action}形式を持っています。条件が 1 と評価された場合、操作が実行されます。条件を省略すると、デフォルト条件は 1 であるため、対応するアクションが実行されます。ジョブが省略された場合、条件が 1 の場合は基本ジョブが実行されます。これは「レコードを印刷する」{print $ 0}で、デフォルトでは入力ファイルの1行です。 1つの条件と基本動作のみ

したがって、1または他のゼロ以外の数字は文字通り{print $ 0}を意味します。

@glenn_jackmanのおかげでOFSが追加されました。

おすすめ記事