2014-01-07 153 views
1

我的文件SQL_INPUT.csv將具有如下的值(值的數量不一定是3,它將達到300甚至格式將如下)我需要只刪除最後一個逗號刪除文件中的最後一個逗號使用Unix

'YC101692','YE100097','YU102391', 

我曾嘗試以下

sed '$ s/,$//' SQL_INPUT.csv 

沒有給任何結果(didnt刪除最後一個,)也試圖

SQL_INPUT.csv | tr -d ",$" 

它刪除了所有逗號

+0

你可以在你的文章中粘貼這個輸出:'head -n 1 SQL_INPUT.csv | hexdump -C' – janos

+0

'tr'根本不使用正則表達式,它只是處理*字符集* –

回答

2

你試圖使用sed似乎幾乎是正確的。我想說下面應該做的伎倆:

sed s/,$// SQL_INPUT.csv 

另外,如果你認爲可能有以下最後一個逗號,你可以改變上述命令,以這樣的空間:

sed 's/, *$//' SQL_INPUT.csv 
+0

我試過上面的但沒有得到任何結果。我是否做錯了 bash-3.2 $ sed s /,$ // SQL_INPUT.csv | echo bash-3.2 $ – user3116123

+0

如果文件具有DOS行結束符,請使用's /,[[:space:]] * $ //' –

+0

@ user3116123您的註釋類似於'sed s /,$ // SQL_INPUT .csv |回聲',這將打印一個空行,因爲'| echo'。所以放下,只做'sed s /,$ // SQL_INPUT.csv',它應該可以工作。 – janos

0

這裏是一種awk

awk '{sub(/,$/,x)}1' SQL_INPUT.csv 
'YC101692','YE100097','YU102391' 
+0

我得到了下面的錯誤 的bash-3.2 $的awk '{子(/,$ /,X)} 1' SQL_INPUT.csv AWK:近語法錯誤行1 AWK:語法:近線1 AWK非法聲明第1行附近出錯 awk:在第1行附近跳出 – user3116123

+1

在我的系統中'awk'沒有錯誤,並且沒有特殊的突發事件使它不兼容。你在什麼操作系統上。 – Jotne

0

是Windows生成的文件,請嘗試以下:

dos2unix SQL_INPUT.csv SQL_INPUT.csv 
sed '$ s/,$//' SQL_INPUT.csv 
+0

我們正在使用SUNOS – user3116123