我们有一个脚本可以比较两个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
非常感谢您的帮助。
答案 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