嗨,现在我从sybase sql获取一些数据,无论我将哪些数据粘贴到Excel工作表中并发送邮件。问题是所有列和他们的价值观都没有排成一行。我需要它排成一行。
我对此进行了一些研究,发现它正在发生,因为回车和换行。我使用*字段而不是特定列来获取行。
sed "s/\r\n/g" $LOG > temp_log.txt
使用上面的命令但没有用。什么是删除回车的最佳方法。代码示例得到了一些解释。感谢
答案 0 :(得分:1)
编辑:在第一次评论后,我注意到了原来的问题
问题是由前一步骤引起的。在前面的步骤中,行由isql折叠。修复损坏将非常困难,因为很难预测哪条线应该作为一条记录粘贴在一起
可以通过告诉isql将更多数据放在一行上来解决原始问题:isql -w 2000
如果您只想找出一起加入行,可以使用tr
(使用sed
进行行操作)。
cat $LOG | tr -d "\r\n" > temp_log.txt
当$ LOG是带空格的某个路径/文件时,上述命令将失败。也许习惯于用小写编写自己的变量,并使用大括号表示变量:
cat "${log}" | tr -d "\r\n" > temp_log.txt
tr正在寻找单个字符,坚果组合它们,所以它也会删除一个\n
。
如果您想避免cat
,请将其改进
tr -d "\r\n" < "${log}" > temp_log.txt
当您知道所有列的总长度是多少时,您可以在fold -w totallength
之后尝试tr
,但这只有在isql将带有空格(而非制表符)的所有字段填充到总长度。