Bash 换行符不是'\n';

Bash 换行符不是'\n';,bash,shell,scripting,line-breaks,Bash,Shell,Scripting,Line Breaks,我有一个由Matlab创建的文本文件(我没有源代码),格式如下: a b c d e f g h 我曾经 sed -i '' $'s/\t/\/g' filename 要将所有选项卡替换为逗号,并最终生成一个如下所示的文件: a,b,c,d e,f,g,h 然后,我尝试使用 tr '\n' ' ' < filename tr'\n'

我有一个由Matlab创建的文本文件(我没有源代码),格式如下:

a   b   c   d

e   f   g   h
我曾经

sed -i '' $'s/\t/\/g' filename
要将所有选项卡替换为逗号,并最终生成一个如下所示的文件:

a,b,c,d
e,f,g,h
然后,我尝试使用

tr '\n' ' ' < filename
tr'\n'
它只给了我最后一行,但当我手动编辑文本文件时,将指针放在行尾,然后按“del”和“enter”并重新运行代码,效果很好。 因此,文本文件中的换行符可能没有用符号\n表示,还有哪些字符可以表示换行符

另外,如果在删除选项卡之前在文件上运行tr行,则会得到一个空输出


谢谢。

听起来你的新行是
\r\n
(Windows风格的)。一个选项是首先使用以下命令删除它们:

tr -s '\r\n' ' ' < file

然后,如果需要,您可以通过管道将其传输到
sed
,以删除后面的逗号。

MATLAB可能使用Windows样式的换行符。请尝试“\r\n”您能否澄清所需的输出?
d
e
之间是否应该有逗号?
tr -s '[:space:]' ',' < file