CSV, как обрезать значения до 2 позиций в нескольких столбцах с помощью UNIX

Вам не нужно сжимать архив, просто добавьте в него уже сжатые файлы.

tar -cf archive.tar directory_with_compressed_files
3
06.06.2019, 19:47
3 ответа

В системах с GNU Coreutils вы можете рассмотреть возможность использования numfmt, например.

$ numfmt --delimiter=, --header --field=2- --format='%.2f' --round=down < file.csv 
Product,Base_Price,Promotion_Price,Discount
Shampoo,1.99,1.40,15.99
Biscuit,2.99,2.40,15.99

Если вы хотите стандартное IEEE из -округление нуля, опустите директиву --round=down.

8
27.01.2020, 21:08

Это делает то, что вы просили:

$ sed -E 's/([0-9]+\.[0-9]{2})[0-9]*/\1/g' file.csv 
Product,Base_Price,Promotion_Price,Discount
Shampoo,1.99,1.40,15.99
Biscuit,2.99,2.40,15.99

Или, если вы хотите округлить числа, а не просто удалить лишние цифры, вы можете попробовать:

$ perl -pe 's/(\d+\.\d+)/sprintf("%0.2f",$1)/ge' file.csv 
Product,Base_Price,Promotion_Price,Discount
Shampoo,2.00,1.41,16.00
Biscuit,3.00,2.41,16.00
5
27.01.2020, 21:08
 awk -F "," 'NR>1{print $1,$2,$3,$4}' y.txt |awk '{print $1,substr($2,1,4),substr($3,1,4),substr($4,1,5)}'|awk 'OFS="," {print $1,$2,$3,$4}1' filename

Product,Base_Price,Promotion_Price,Discount
Shampoo,1.99,1.40,15.99
Biscuit,2.99,2.40,15.99
1
27.01.2020, 21:08

Теги

Похожие вопросы