文本拼接错误:后面的内容跑到前面去了
2020-05-03 本文已影响0人
王诗翔
今天很奇怪,在对文本内容循环取变量进行常规的 Linux 拼接字符串操作都不起作用了。
$ bash batch_gen.sh
Processing EGAN00001749284
gzsers/wsx/EGA/EGAD00001004183/clean2/EGAN00001749284
Processing EGAN00001749285
gzsers/wsx/EGA/EGAD00001004183/clean2/EGAN00001749285
几经摸索才发现完全不是代码的锅,原来是文件来自 Windows,它的回车符号与 Unix 不一样导致的。解决办法是使用编辑器转换 CRLF 为 LF(Windows下),或者使用 dos2unix 命令(有的系统可能需要安装)。
事实证明,迭代文件之前还是检查一下文件格式比较好,使用 cat -t
。
$ cat -t ID_STAR.csv
EGAN00001749284^M
EGAN00001749285^M
EGAN00001749287^M
EGAN00001749288^M
EGAN00001749289^M
EGAN00001749290^M
EGAN00001749291^M
EGAN00001749292^M
EGAN00001749293^M
EGAN00001749295^M
如果行尾有 ^M
标志,就需要转换下啦。