0

次の内容の test.csv というファイルがあります。

T1,T2,T3,T4
10,2,3,17
10,2,5,14
10,2,2,16
15,1,17,15
12,1,9,25

4 列目の値 17 をすべて 25 に置き換えたいので、次のコマンドを試しました。

cat test.csv | sed -r 's/(([1-9]+,){3})17/\125/g'
T1,T2,T3,T4
10,2,3,17
10,2,5,14
10,2,2,16
15,1,17,15
12,1,9,25

ご覧のとおり、最後の行のみが変更され、2 番目の行は変更されていません。

ただし、そうすると、必要なcat test.csv | sed -r "s/([0-9]+,[0-9]+,[0-9]+,)17/\125/"出力が得られます。何故ですか?

4

1 に答える 1

1

sed 行が機能しなかった理由は次のとおりです。

sed 行を注意深く確認すると、

cat test.csv | sed -r 's/(([1-9]+,){3})17/\125/g' (your sed line)

あなたが持ってい[1-9]なかっ[0-9]た、それを修正して再試行してください、それはあなたのために働くはずです.

cat file不要です。できるよsed '...' file

于 2013-02-04T22:54:34.527 に答える