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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top