CSVファイルの数値を丸め、ヘッダーをスキップする

CSVファイルの数値を丸め、ヘッダーをスキップする

この質問はこの質問の派生です。https://askubuntu.com/questions/601149/is-there-a-command-to-round-decimal-numbers-in-txt-files、以下を使用して正常に解決されました。

perl -i -pe 's/(\d*\.\d*)/int($1+0.5)/ge' file

問題は、私のCSVファイルのヘッダーも上記のPerlのオネライナーによって修正されることです。これは私にとって非常に不便です。このワンライナーでCSVファイルの最初の行をスキップする方法はありますか?

ベストアンサー1

$.Perlには現在行番号を追跡する特別な変数があります。したがって、$. > 1交換に簡単な条件を追加できます。

perl -i -pe 's/(\d*\.\d*)/int($1+0.5)/ge if $. > 1' file

バラよりPerlVar:ファイルハンドルに関連する変数


他のツールには明示的なヘッダ処理機能があります。numfmtGNU Coreutilsから:

numfmt -d, --header --format='%.0f' --field=- --invalid=ignore <file

(デフォルトではIEEEは0から切り上げられます。)

おすすめ記事