有人可以帮助解决方案来解析修复日志中没有空格行分隔符的数据吗?该文件的内容包含在名为 e 的文件中。
8=FIX.4.49=025535=R49=UAT_RFQ56=UAT34=283052=20221101-20:16:01.304115=CPP131=booboo=155=EUR/USD167=FOR38=10000000015=EUR63=SP1=CPPIAGT453=1448=yogi447=D452=378=179=NT6R80=100000000467=07152=110=061
+++
我认为可能的唯一常见模式是“=”符号。因此,理想情况下,如果遇到 '=' 符号,则取等号前 2 或 3 个位置的值并放在换行符上。
理想情况下,输出如下所示:
8=FIX.4.4
9=0255
35=R
49=UAT_RFQ
56=UAT
34=2833
52=20221101-20:16:42.239
115=CPP
131=booboo
146=1
55=EUR/USD
167=FOR
38=100000000
15=EUR
63=SP
1=CPPIAGT
453=1
448=yogi
447=D
452=3
78=1
79=NT6R
80=100000000
467=07
152=
110=073
但如果能用一个空格分开我会很高兴。
8=FIX.4.4 9=0255 35=R 49=UAT_RFQ 56=UAT 34=2830 52=20221101-20:16:01.304 115=CPP 131=booboo=1 55=EUR/USD 167=FOR 38=100000000 15=EUR 63=SP 1=CPPIAGT 453=1 448=yogi 447=D 452=3 78=1 79=NT6R 80=100000000 467=07 152= 110=061
我尝试过简单的方法: cat e | sed 's/=/\t/g'。这导致
8 FIX.4.49 025535 R49 UAT_RFQ56 UAT34 283052 20221101-20:16:01.304115 CPP131 booboo 155 EUR/USD167 FOR38 10000000015 EUR63 SP1 CPPIAGT453 1448 yogi447 D452 378 179 NT6R80 100000000467 07152 110 061
这并不代表我正在寻找的解决方案。如果您能给我指出正确的方向或提供一些建议。
非常感谢您的帮助。
答案1
不可能做到“一二”。仅一个或两个字符:
sed -e 's|\(.\)=|\n\1=|g' <e
sed -e 's|\(..\)=|\n\1=|g' <e
如果你设法从文本中找到一个模式来决定密钥有多长——那么我们就可以重新审视这个难题。但现在...
您绝对确定键=值对之间没有分隔符吗?尝试使用hexdump
- 它可以帮助您注意到不可打印的字符。