的Unix Shell脚本删除 - 从文件

问题描述:

我有一个包含文件以下信息的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

尝试此,该命令在线路的端部去除破折号

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

可以使用sed

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

第一表达发现数字,后面接着-,并且由数字替换它并逗号;第二个表达式删除行末尾的破折号。

+0

非常感谢,谢谢 – meso

+0

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

+0

由于某种原因该命令不适用于行项目的结尾,我尝试了不同的变体,但它仍然没有任何想法? – meso

这可能为你工作(GNU SED):

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

逗号或从行的最后一个领域一个连字符前取出一个连字符。