2016-09-17 182 views
1

我有一個包含文件以下信息的Unix Shell腳本刪除 - 從文件

job, cost_code, laborcost,materialcost  
202-12-21, 23-94-23, **110.00-**, 120.04  
204-12-21, 23-93-23, 520.00, **120.04-**  
204-12-12, 24-93-23, 155.00, **120.04-** 

很少有問題記錄具體的人其中有一個-sign在生產線(標有**年底這是不真的在那裏)。

我想用正則表達式去除 - 符號,但我遇到了麻煩只匹配有問題的那些。

+0

'tr'不適用於此,它只能用於刪除或替換'-'無處不在。 – tripleee

回答

0

嘗試此,該命令在線路的端部去除破折號

sed s'/-$//' 
echo "204-12-21, 23-93-23, 520.00, 120.04-" | sed s'/-$//' 
0

可以使用sed

sed -i~ 's/\([0-9]\)-,/\1,/g;s/-$//' input.csv 

第一表達發現數字,後面接着-,並且由數字替換它並逗號;第二個表達式刪除行末尾的破折號。

+0

非常感謝,謝謝 – meso

+0

@meso:thank you = upvote/accept。 – choroba

+0

由於某種原因該命令不適用於行項目的結尾,我嘗試了不同的變體,但它仍然沒有任何想法? – meso

0

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

sed -r 's/-(,|$)/\1/g' file 

逗號或從行的最後一個領域一個連字符前取出一個連字符。