2017-08-03 50 views
0

我正在尋找一個shell腳本來修改CSV文件中的單元格中的數據(並非列中的所有單元格)。我有這樣的命令:如何編輯CSV文件中的單元格

awk -v r=2 -v c=1 -v val=xxx -F, \ 
    'BEGIN{OFS=";"}; NR != r; NR == r {$c = val; print}' data.csv 

輸入:

1995; 1999; 1857; 1349; 
1999; 2000; 1824; 1875; 
1923; 1324; 1343; 1432; 

輸出:

1995; 1999; 1857; 1349; 
1999; xxx; 1824; 1875; 
1923; 1324; 1343; 1432; 

我需要修改B2細胞,並把裏面XXX字符串,而不是。這個命令不起作用,有人能幫助我嗎?

+1

如果您可以提供一些輸入和預期輸出數據,那將非常有用。 – JFS31

回答

1

-F,設置FS,當您的實際FS;。這樣做:

awk -v r=2 -v c=2 -v val='xxx' 'BEGIN{FS=OFS=";"} NR==r{$c=val} 1' data.csv 

,或者如果每個分號真的後面是空白字符就像你貼樣品輸入/輸出:

BEGIN{FS=OFS="; "} 

或者如果每個;後的空格是可選的:

BEGIN{FS="; ?"; OFS="; "} 

或:

BEGIN{FS="; *"; OFS="; "} 
0

使用GNUsed,所述是領先,並且是最終,(細胞B2行2柱2) :

sed '2s/\(\S\+\);/xxx;/2' data.csv 

輸出:

1995; 1999; 1857; 1349; 
1999; xxx; 1824; 1875; 
1923; 1324; 1343; 1432; 
相關問題