27 lines
990 B
Markdown
27 lines
990 B
Markdown
|
---
|
||
|
title: "Préparer un dépot de tickets restaurant"
|
||
|
date: 2022-09-11T11:48:56+02:00
|
||
|
tags:
|
||
|
- shell, awk, oneliner
|
||
|
categories :
|
||
|
- commandline
|
||
|
draft: false
|
||
|
description : "awk pour la restauration"
|
||
|
slug : "tickets-restaurant-awk"
|
||
|
|
||
|
---
|
||
|
|
||
|
J'ai quelques tickets restaurant à trier et déposer au CRT. Le problème c'est qu'il faut leur donner le nombre exact et le montant.
|
||
|
|
||
|
C'est long et fastidieux. J'ai une douchette à code barres, ça va être moins long et moins fastidieux :-)
|
||
|
|
||
|
Dans le code barre, le montant est "hardcodé" entre le 13ème et le 16ème caractères. Il suffit donc de :
|
||
|
- scanner chaque ticket avec la douchette et renvoyer le tout dans un fichier
|
||
|
- extraire le chiffre entre la 13ème et le 16ème caractère inclus
|
||
|
- ajouter un point entre les 2
|
||
|
- faire la somme
|
||
|
|
||
|
mon onliner pour faire ça :
|
||
|
|
||
|
awk '{substr($0,13,16);sub(/[0-9]{2}/, "&.",$1); s+=$1} END {print "Total :" s " Nombre de TR : " NR " Pour une moyenne de : " s / NR "€"}' mon_fichier
|