Linux-删除换行符

Linux-删除换行符,linux,linefeed,Linux,Linefeed,是否有办法使用linux命令删除下面显示的LF。 每行应以字符串“F |”开头。不幸的是,我的Oracle数据库中有多行是用十六进制0a LF存储的,这在spool处会导致换行 谢谢 $grep -nvB 1 '^F|' File.txt 4720156-F|29|204380|A|16060|Telephone Updated by DCA|99996319 , 4720157:

是否有办法使用linux命令删除下面显示的LF。 每行应以字符串“F |”开头。不幸的是,我的Oracle数据库中有多行是用十六进制0a LF存储的,这在spool处会导致换行

谢谢

$grep -nvB 1 '^F|' File.txt
4720156-F|29|204380|A|16060|Telephone Updated by DCA|99996319        ,
4720157:                                                        |manual|
--
6005453-F|29|121389|A|16060|Telephone Updated by DCA|96844599        ,
6005454:                                                        |new|
--
6354243-F|29|366910|A|16060|Telephone Updated by DCA|
6354244:                                                        |new|
--
13318314-F|29|397713|A|16060|Telephone Updated by DCA|97597079        ,
13318315:                                                       ,52094436|new|
--
13471591-F|29|17945|A|16060|Telephone Updated by DCA|47990248,94291610,
13471592:                                                       |new|
--
13471607-F|29|152501|A|16060|Telephone Updated by DCA|
13471608:                                                       ,90290027,38297606|new|
--
13944867-F|29|322564|A|16060|Telephone Updated by DCA|
13944868:                                                       |new|
User@db01.test processed$

因此,您希望不以F |开头的线与以F |开头的线相连。使用sed的解决方案:

/^F |/如果行以F |开头: x交换保留空间和图案空间的内容 2、$p如果不是第一行:打印先前保留的行 将分支标记为e 否则,该行不以F |开头: x交换保留空间和图案空间的内容 G将保留空间附加到已连接但仍嵌入LF的图案空间线 s/\n//删除左前角 h复制图案空间连接线以保留空间 :e标签e以上两种情况请点击此处: $如果最后一行: g复制保持空间到图案空间 p打印最后一行 你试过hextump-c File.txt吗?如果我怀疑您的行以\r\n结尾,并且您的行只包含单行换行符,\n您可以使用sed或perl删除\n,然后用\r\n替换单行换行符,以恢复原始行的结尾
sed -n '/^F|/{x;2,$p;be};x;G;s/\n//;h;:e;${g;p}' File.txt