une ligne avec sed et bc ensemble?
Question
Je veux ajouter un à la dernière valeur à la fin d'une chaîne dans sed. Je pense le long des lignes de
cat 0809_data.csv |sed -e 's/\([0-9]\{6\}\).*\(,[^,]*$\)/\1\2/g'| export YEARS = $(echo `grep -o '[^,]*$' + 1`|bc)
par exemple. 123456, kjhsflk, lksjgrlks, 2.8 -> 123456, 3.8
Serait-ce plus raisonnable / réalisable dans awk?
La solution
Cela devrait fonctionner:
years=$(awk -F, 'BEGIN{ OFS=", "} {print $1, $4+1}' 0809_data.csv)
Il serait vraiment maladroit d'essayer d'utiliser sed
et faire de l'arithmétique avec une partie du résultat. Il faudrait tirer la corde à part et faire le calcul et tout remettre ensemble. AWK fait que d'une manière ordonnée sans aucun problème.
Notez que cat
n'est pas nécessaire (même en utilisant sed
dans une commande similaire à celle de votre question) et il est probablement pas nécessaire d'exporter la variable sauf si vous appelez un autre script et besoin de pouvoir accéder comme une variable « globale ». En outre, les coquilles font généralement nombres entiers de sorte que vous n'avez pas besoin d'utiliser bc
sauf si vous avez besoin de flotteurs.