我有一个包含以下数据的ASCII文件
459999XXX9998882 WTD CCD 3,500.00- 0.00 3,500.00- 0.00 0.00
09/07/17 23:00:07 999999999999 000000000000 EONCO024 GTUR BR AND PARDES APIN
459999XXX9998883 WTD CCD 400.00- 0.00 400.00- 0.00 0.00
09/07/17 23:00:12 999999999999 000000000000 EOMCO015 P.G ROAD, ANNA HOT SECU TLIN
29999XXX99988829 INQ CCD 0.00 0.00 0.00 0.00 0.00
09/07/17 23:00:41 999999999999 000000000000 EOMCO010 PUNA KUMBHARIA ROAD, SUR GJIN
5459999XXX999888 INQ SAV 0.00 0.00 0.00 0.00 0.00 UNABLE TO PROC
09/07/17 23:00:44 999999999999 000000000000 EONCO089 CTS NO 3985/5 ST STAND SOL MHIN
我希望包含日期的行与其上方的行相接触。 Essenatilly我想删除奇数行的所有换行符。所以结果是这样的
459999XXX9998882 WTD CCD 3,500.00- 0.00 3,500.00- 0.00 0.00 09/07/17 23:00:07 999999999999 000000000000 EONCO024 GTUR BR AND PARDES APIN
459999XXX9998883 WTD CCD 400.00- 0.00 400.00- 0.00 0.00 09/07/17 23:00:12 999999999999 000000000000 EOMCO015 P.G ROAD, ANNA HOT SECU TLIN
29999XXX99988829 INQ CCD 0.00 0.00 0.00 0.00 0.00 09/07/17 23:00:41 999999999999 000000000000 EOMCO010 PUNA KUMBHARIA ROAD, SUR GJIN
5459999XXX999888 INQ SAV 0.00 0.00 0.00 0.00 0.00 UNABLE TO PROC 09/07/17 23:00:44 999999999999 000000000000 EONCO089 CTS NO 3985/5 ST STAND SOL MHIN
我尝试了here提供的解决方案,但随后它删除了导致一行的所有换行符!非常感谢任何想法。
答案 0 :(得分:2)
打印每一行,在制表符和换行符之间交替显示输出记录分隔符ORS
:
awk '{ ORS = NR % 2 ? "\t" : "\n" } 1' file
NR
是当前记录(行)编号,因此NR % 2
在奇数行上为真。
显然,标签"\t"
可以更改为您想要放在您加入的行之间的任何内容。
答案 1 :(得分:2)
sed 'N;s/\n/ /' ip.txt
N
在模式空间中添加下一行s/\n/ /
将第一个换行符更改为空格(或任何分隔符)\n
的使用可能取决于sed
的实施。这是在GNU sed
使用perl
,如果行号为奇数,则更改换行符
perl -pe 's/\n/ / if $.%2' ip.txt
也可以用
xargs -d'\n' -n2 -a ip.txt
-d'\n'
换行符作为分隔符-n2
两条线作为参数(空间用于组合它们)答案 2 :(得分:0)
您可以使用命令
awk 'NR % 2 == 1 { printf $0; getline; print $0 }' filename
这意味着"对于每个奇数行,打印它而不用' \ n',得到下一行,用' \ n'"打印出来。