Sed -i正在创造新的线条和印刷输出

时间:2017-07-26 04:17:47

标签: python shell sed

我们有一个脚本可以比较两个CSV文件行并打印“匹配找到”或 每行第二个文件末尾的“未找到”输出。它工作得很好,但最近我更新了Cygwin,不知道出了什么问题,现在它将输出打印到所有行的下一行。新版本的Cygwin-Python和shell

发生了变化

以下是我正在使用的代码行:

sed -i "${lineNum}s/$/,Found/" file2.csv

File1.csv
abcd efgh ijkl
mnop qrst xyz

File2.csv
abcd efgh ijkl      found
mnop qrst xyzzz     not found

它应该如上打印。但它显示如下。

File2.csv
abcd efgh  ijkl
     found
mnop qrst     xyzzz    
     not found

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这似乎是换行问题。 Windows平台使用\r\n作为换行序列,而UNIX平台仅使用\n。如果您的文件包含\r\n且您的代码在\r之后和\n之前插入内容,那么可能会涉及到这些内容。

一个简单的解决方法是首先将文件转换为UNIX格式,然后(可选)将文件转换回来:

dos2unix file2.csv
sed -i "${lineNum}s/$/,Found/" file2.csv
unix2dos file2.csv ## if you want DOS-style newlines