我正在尝试从CSV中的所有行中删除“尾随”。我正在使用RedHat Linux。
我能够在VIM中成功完成%s/"$//g
然而,执行sed -e 's/"$//g'
不起作用(在终端中,当我将它作为bash脚本的一部分时)。我做的一个类似的调用是从所有行中移除LEADING,sed -e 's/^"//g'
可以工作,所以我非常困惑!特别是因为它适用于VIM。
有什么建议吗?
谢谢!
答案 0 :(得分:3)
我怀疑您的文件是DOS
格式。试试这样:
$ cat file
line1"
line2"
line3"
$ sed -e 's/"$//' file
line1"
line2"
line3"
$ sed -e $'s/"[\r]\\?$//' file
line1
line2
line3
$
要检查文件是否为DOS
格式,您可以:
$ file file
file: ASCII text, with CRLF line terminators
$ head -n 1 file | hexdump -C
00000000 6c 69 6e 65 31 22 0d 0a |line1"..|
00000008
$
有dos2unix
(和unix2dos
)等工具可供您在必要时进行转换。
Vim
在处理不同格式的文件方面要聪明得多,所以vim
可以按预期处理它并不会感到惊讶。