Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Awk 在不显示^M的情况下连接线对_Awk_Sed - Fatal编程技术网

Awk 在不显示^M的情况下连接线对

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 /

我的文件(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 ///// ///// ///// 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
,它工作得非常好。现在要在完整数据集上进行测试。。。