2

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でより合理的/実行可能でしょうか?

4

1 に答える 1

2

これはうまくいくはずです:

years=$(awk -F, 'BEGIN{ OFS=", "} {print $1, $4+1}' 0809_data.csv)

sed結果の一部を使用して算術演算を行うのは、非常に厄介です。ひもを引き離して計算し、すべてを元に戻す必要があります。AWK は、大騒ぎせずにきちんとそれを行います。

catそれは必要ではないことに注意してsedください(質問のようなコマンドで使用しても)、別のスクリプトを呼び出していて、「グローバル」変数としてアクセスできるようにする必要がない限り、変数をエクスポートする必要はおそらくありません. また、シェルは一般に整数演算を行うため、bc浮動小数点数が必要でない限り使用する必要はありません。

于 2010-05-31T16:01:37.930 に答える