这个sed命令有什么问题?

问题描述:

我正面临一个奇怪的问题。我想要做的答案已经存在Here。我试图从包含数千行的文件的每一行删除尾随逗号。这样的 -这个sed命令有什么问题?

enter image description here

这是我的命令 -

sed -i 's/,*$//g' file_name.csv 

然而,输出我得到的是完全一样的图像上,并尾随逗号不会被删除。

我认为SED不符合该模式,因此无法取代逗号。要检查是否有任何隐藏字符的文件,我用VIM的:设置列表选项 -

enter image description here

有每个而这正是预期一行的末尾只$

我不明白为什么命令失败。

+1

尝试'sed's /,\ + $ // g'' –

+2

也不张贴纯文本的图片。只是复制和粘贴文字 – sashang

+0

'sed's /,*.$// g''可以做到 – Edvin

我可以建议你两种选择: 第一个是我的最爱。

 dos2unix file 
#####will work for Huge File also 

然后尝试运行该命令。

其他方式做到这一点:

cat file | tr -d '\r' > file 
###may not work for huge file 

然后运行命令。

tr -d '\r' <file> file.tmp ; mv file.tmp file 
    ##will work for Huge File also 

感谢@Nahuel提示最后的命令。

+0

第二个命令是错误的,cat是无用的,file可能会被截断后才能被读取 –

+0

@NahuelFouilleul如果它的文件非常庞大。那么是的:) –

+0

可以使用一个临时文件:'tr -d'\ r' file.tmp; mv file.tmp文件' –