用Sed替换混合转义序列、控制字符和文字?

用Sed替换混合转义序列、控制字符和文字?,sed,escaping,control-characters,Sed,Escaping,Control Characters,我需要清理(最好是使用sed)数据转储中的文字、可见和转义控制字符的奇怪组合,例如^a、^B、\N(字面意思)和可见换行符。我需要清理文件,使可见的换行符保持完整,用制表符替换每个^A,并去除每个^B\N^B\N(数据中的每个unix时间值后面,例如13068505731812510) 这就是在shell命令中使用less时内容的外观(在shell中,^a和^B字符具有黑色背景以表示控制字符): ^Aguid^Aunix时代^B\N^A4^A192.168.21.136^A7.0^AIE^A^A

我需要清理(最好是使用sed)数据转储中的文字、可见和转义控制字符的奇怪组合,例如^a^B\N(字面意思)和可见换行符。我需要清理文件,使可见的换行符保持完整,用制表符替换每个^A,并去除每个^B\N^B\N(数据中的每个unix时间值后面,例如13068505731812510)

这就是在shell命令中使用
less
时内容的外观(在shell中,^a^B字符具有黑色背景以表示控制字符):

^Aguid^Aunix时代^B\N^A4^A192.168.21.136^A7.0^AIE^A^A^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时间数字转换为人类可读的时间,则可获得额外积分。

将^A更改为选项卡:

sed 's/\^A/'"$(printf '\011')"'/g'
剥去我们的^B^N:

sed -e 's/\^B\\N\^B\\N//g'

有趣的是,我将尝试这些并报告。我尝试了
sed的/^A/\t/g'
,但没有成功-知道为什么不起作用吗?好的,到目前为止,sed没有配合替换像^A这样的控制字符(或者如果是这样,至少使用较少的字符并不明显,我尝试用
^A
^A
,和
\001
替换为
\t
和printf命令).我们需要看一些版本号,操作系统,shell,sed?祝你好运