Awk 在不显示^M的情况下连接线对
我的文件(temp.txt)如下所示:Awk 在不显示^M的情况下连接线对,awk,sed,Awk,Sed,我的文件(temp.txt)如下所示: -2011-10-07 11:30:01 00 ///// ///// ///// 00000C00 -2011-10-07 11:30:17 00 ///// ///// ///// 00000C00 -2011-10-07 11:30:32 00 ///// ///// ///// 00000C00 -2011-10-07 11:30:46 00 ///// ///// ///// 00000C00 -2011-10-07 11:30:01 00 /
-2011-10-07 11:30:01
00 ///// ///// ///// 00000C00
-2011-10-07 11:30:17
00 ///// ///// ///// 00000C00
-2011-10-07 11:30:32
00 ///// ///// ///// 00000C00
-2011-10-07 11:30:46
00 ///// ///// ///// 00000C00
-2011-10-07 11:30:01 00 ///// ///// ///// 00000C00
-2011-10-07 11:30:17 00 ///// ///// ///// 00000C00
-2011-10-07 11:30:32 00 ///// ///// ///// 00000C00
-2011-10-07 11:30:46 00 ///// ///// ///// 00000C00
我想连接每对线,使其看起来像这样:
-2011-10-07 11:30:01
00 ///// ///// ///// 00000C00
-2011-10-07 11:30:17
00 ///// ///// ///// 00000C00
-2011-10-07 11:30:32
00 ///// ///// ///// 00000C00
-2011-10-07 11:30:46
00 ///// ///// ///// 00000C00
-2011-10-07 11:30:01 00 ///// ///// ///// 00000C00
-2011-10-07 11:30:17 00 ///// ///// ///// 00000C00
-2011-10-07 11:30:32 00 ///// ///// ///// 00000C00
-2011-10-07 11:30:46 00 ///// ///// ///// 00000C00
但是,我尝试过的每种方法(sed、awk、paste)都会在对之间插入^M,如下所示:
-2011-10-07 11:30:01^M 00 ///// ///// ///// 00000C00
-2011-10-07 11:30:17^M 00 ///// ///// ///// 00000C00
-2011-10-07 11:30:32^M 00 ///// ///// ///// 00000C00
-2011-10-07 11:30:46^M 00 ///// ///// ///// 00000C00
在vi中,^M显示为蓝色,可以手动删除,但不能通过模式匹配删除。它出现了“找不到模式”错误。也没用。在gedit中打开或导出到电子表格时,回车表示它显示在第一个文件中。由于我的文件比这里的部分大得多,而且我每天要分析6个月的文件,所以手动删除不是一个选项。请帮忙 表格
^M
称为“插入符号”,表示回车。您的文件正在使用DOS行尾字符。将它们转换为Unix格式
您可以通过在输入文件上运行dos2unix
,或通过tr-d'\r'
管道传输它们来实现这一点
在
vi
和sed
中,您可以使用s/\r//g
自动替换它们 使用sed
。这适用于UNIX和DOS格式输入,因此无需对文件使用dos2unix
sed 'N; s|[\r\n]\+| |' file
输出:
-2011-10-07 11:30:01 00 ///// ///// ///// 00000C00
-2011-10-07 11:30:17 00 ///// ///// ///// 00000C00
-2011-10-07 11:30:32 00 ///// ///// ///// 00000C00
-2011-10-07 11:30:46 00 ///// ///// ///// 00000C00
正如其他人所指出的,问题不在于您用来处理输入文件的工具,而在于生成输入文件的工具
tr -d '\r' < file | awk '{ORS=(NR%2?FS:RS)}1'
谢谢大家!数据来自外部源,由于我在vi中打开时在原始数据中没有看到它,所以我认为它一定是在连接过程中添加的。在连接之前,我在sed中使用了
s/\r//g
,它工作得非常好。现在要在完整数据集上进行测试。。。