2012-12-06 63 views
1

我喜歡這樣的csv(分隔符:逗號分隔)文件 a,b,c,d csv文件中有近似10000行,如上所述。無論寫在最後一場,我都必須改變'e'。修改完整的csv文件的最後一個字段

例如, 輸入文件

a,b,c,d 
e,f,g,h 
i,j,k,l 
m,n,o,p 

輸出文件

a,b,c,e 
e,f,g,e 
i,j,k,e 
m,n,o,e 

正如你可以看到d(第一行的最後一個元素)中,h(第二行的最後一個元素),L(第三行的最後一個元素),P(第四行最後一個元素) ...全部替換爲'e'。

我如何在Linux上通過shell腳本來更改它。用awk

回答

4

方式一:

awk -F, '{$NF="e";}1' OFS=, file 

$NF指示文件的最後一個字段。只需將「e」設置爲$ NF即可完成您的工作。 1是打印每一行。

-F =>指定輸入字段分隔符, OFS =>指定O/P字段分隔

使用的sed還有一個選項:

要改變使用GNU代替文件sed的:

sed -i 's/\(.*,\).*/\1e/' file 

sed的格局,直到最後一個逗號和組它是可用的是\1匹配。通過追加「e」,我們得到了解決方案。

+0

請在這裏多解釋一下 – user595014

3
awk -F',' -v OFS=',' '{ print $1, $2, $3, "e" }' 

這種方法的缺點是它假設逗號不出現在字段本身。

相關問題