2013-10-02 168 views
0

我很難從csv文件中刪除特殊字符。如何從unix中的csv文件中刪除特殊字符

我的過程是這樣在我的輸出表我有這樣

Col1 
BC,BS/APP 

一些像這樣的數據我還有一個10列,其中有獲得特殊字符時,我和PATINDEX我是試過的機會能夠刪除只有第一個特殊字符,並刪除其他字符,我需要使用while循環,這是很難做到這一點。

所以我嘗試了數據bcping下面的csv文件後刪除特殊字符是我使用

bcp_with_error_check tempdb..STT_IM166_WEB_MWE out temp.dat -SSVR -UUSR -PPWD -c -b1000 -t'","' 
sed -e 's/,"0/,="0/g;s/,"1/,="1/g;s/,"2/,="2/g;s/,"3/,="3/g;s/,"4/,="4/g;s/,"5/,="5/g;s/,"6/,="6/g;s/,"7/,="7/g;s/,"8/,="8/g;s/,"9/,="9/g'temp.dat > temp1.dat 
sed -e 's/$/"/g' temp1.dat > temp2.dat 
sed -e 's/^/="/g' temp3.dat >>Filename.csv 

我的問題bcp命令是因爲它是CSV文件,如果我刪除逗號(,)考慮到特殊字符會影響文件格式。

我可以在數據庫中單獨替換逗號,但是我沒有收到單獨排除逗號並刪除其他字符的命令。請幫我出我在非常需要這個命令的

+0

這部分刪除逗號? – Beta

+0

您如何知道第一列包含逗號與第一個逗號標記第一個字段結束的時間?你知道第二個字段總是數字嗎? –

+0

在這裏我沒有包括刪除逗號的代碼@Beta – Ramesh

回答

1

我不清楚你真的是後話,但起碼你可以通過10倍縮小你的第一個sed命令:

sed -e 's/,"\([0-9]\)/,="\1/g' temp.dat > temp1.dat 

該模式查找逗號,雙引號和一個數字(並記住數字是什麼);它被逗號,等號,雙引號和記住的數字取代。

除非你有不同的臨時文件的理由,你可以摺疊三個sed命令爲一家擁有:

sed -e 's/,"\([0-9]\)/,="\1/g' -e 's/$/"/g' -e 's/^/="/g' temp.dat >>Filename.csv 

如果bcp_with_error_check如果省略out temp.dat參數將寫到標準輸出,那麼你不需要任何臨時文件(這通常是一個好主意)。請注意,如果兩個人無意中在相同的目錄中同時運行這個命令,他們會在對方的臨時文件中踐踏(或因爲不能運行而遇到問題)。沒有臨時文件,你只有最後的文件名,Filename.csv擔心。

但是,這並沒有解決你的主要問題 - 它只是改善你的腳本。

+0

謝謝您的意見,我會注意到但我的主要問題是刪除特殊字符而不會干擾csv佈局。 – Ramesh