1

我在需要清理的数据转储中混合了文字、可见和转义的控制字符(最好使用sed),例如^A^B\N(字面意思)和可见换行符。我需要清理文件以使可见的换行符保持不变,用制表符替换每个 ^A,并剥离每个^B\N^B\N(它遵循数据中的每个 unix 时间值,例如 13068505731812510)。

这是在 shell 命令中使用的内容的样子less(在 shell 中,^A^B字符具有深色背景以表示控制字符):

^A guid ^A unix-time ^B\N^B\N^A 4 ^A 192.168.21.136 ^A 7.0 ^A IE ^A 8 ^A guid ^A WinNT ^A ...(可见换行符)

或者一个字面的例子......

... ^A40C4595C-0B9D-46B7-8214-3D9CE2B5F057^A13071154505579551^B\N^B\N^A4^A192.168.21.136^A7.0^AIE^A8^AE6979203-F58B-4D20-9D66-7F5369BF9E32^AWinXP^A ...

到目前为止,我一直在喂sed的转义序列并没有产生预期的输出。有谁知道在尽可能少的时间内完成这一切所需的魔法逃脱?(有很多文件,时间很重要。)谢谢!如果我可以在同一次传递中将 unix 时间数字转换为人类可读的时间,则可以加分。

4

1 回答 1

0

将 ^A 更改为制表符:

sed 's/\^A/'"$(printf '\011')"'/g'

去掉我们的^B^N:

sed -e 's/\^B\\N\^B\\N//g'
于 2011-07-13T22:15:29.227 回答