我有一个包含如下数据的 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
我尝试了此处提供的解决方案,但随后它删除了所有换行符,导致一行!任何想法将不胜感激。
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
两行作为参数(空格用于组合它们(
打印每一行,在制表符和换行符之间交替,作为输出记录分隔符ORS
:
awk '{ ORS = NR % 2 ? "t" : "n" } 1' file
NR
是当前记录(行(编号,因此NR % 2
在奇数行上为真。
显然,制表符"t"
可以更改为您想要放在要连接在一起的行之间的任何内容。
您可以使用命令
awk 'NR % 2 == 1 { printf $0; getline; print $0 }' filename
这意味着"对于每个奇数行,打印它而不带'',获取下一行,用''打印它"。