2014-03-04 55 views
0

如何通過sed修改特定的窗格,特別是將數字數字應用於該列數據。如何使用sed修改特定列

我有一個CSV文件看起來像這樣:

c1,c2,123,c4 
c1,c2,345,c4 

是有可能增加400至每行3列? ,使結果大致如下:

c1,c2,523,c4 
c1,c2,745,c4 

我試圖通過自己使用

"sed -n 's/[0-9]\{3\}/&+400/ p' test.csv " 

,其結果是

c1,c2,123+400,c4 
c1,c2,345+400,c4 
+1

您可能想要使用'awk'來代替,指定'OFS =',''來設置分隔符,例如, 'awk OFS =','$ 1,$ 2,$ 3 + 400,$ 4' – slugonamission

+1

如果您確實需要'sed',[此文章](https://unix.stackexchange.com/questions/36949/addition-with-sed )可能會有所幫助。 – gongzhitaao

回答

1

這可能爲你工作(GNU SED):

sed 's/[^,]*/$((&+400))/3;s/.*/echo "&"/e' file 

這裏使用的SED和Bash的組合。

3
awk -F, 'OFS="," {$3 += 400; print}' yourfile.csv 
5

awk更這裏適合:

awk '{$3+=400}1' FS=, OFS=, file