sedの文字列の最後の最後の値に1を追加したいと思います。私はの線に沿って考えています
cat 0809_data.csv |sed -e 's/\([0-9]\{6\}\).*\(,[^,]*$\)/\1\2/g'| export YEARS = $(echo `grep -o '[^,]*$' + 1`|bc)
例:123456、kjhsflk、lksjgrlks、2.8-> 123456、3.8
これはawkでより合理的/実行可能でしょうか?
これはうまくいくはずです:
years=$(awk -F, 'BEGIN{ OFS=", "} {print $1, $4+1}' 0809_data.csv)
sed
結果の一部を使用して算術演算を行うのは、非常に厄介です。ひもを引き離して計算し、すべてを元に戻す必要があります。AWK は、大騒ぎせずにきちんとそれを行います。
cat
それは必要ではないことに注意してsed
ください(質問のようなコマンドで使用しても)、別のスクリプトを呼び出していて、「グローバル」変数としてアクセスできるようにする必要がない限り、変数をエクスポートする必要はおそらくありません. また、シェルは一般に整数演算を行うため、bc
浮動小数点数が必要でない限り使用する必要はありません。