この質問はこの質問の派生です。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
他のツールには明示的なヘッダ処理機能があります。numfmt
GNU Coreutilsから:
numfmt -d, --header --format='%.0f' --field=- --invalid=ignore <file
(デフォルトではIEEEは0から切り上げられます。)