这是我的输入文件
^A{1:IRVTUS30XXX}{2:I300dfaffaefa}{3:fewfa]}
:15A:
:20:1234556
:22:dsafas
dsafafaf
erwfafgr
:23:fewfd
:24:firh
:60:uncenjnjcdv
:72:uenuernfk
12345
-}^C^A{1:IRVTUS30XXX}{2:I304dfaffaefa}{3:fewfa]}
:15A:
:20:1234556
:22:dsafas
dsafafaf
erwfafgr
:23:fewfd
:24:firh
:60:uncenjnjcdv
:72:uenuernfk
12345
-}^C^A{1:IRVTUS30XXX}{2:I306dfaffaefa}{3:fewfa]}
:15A:
:20:1234556
:22:dsafas
dsafafaf
erwfafgr
:23:fewfd
:24:firh
:60:uncenjnjcdv
:72:uenuernfk
12345
-}^C
在这里,我想使用以下命令删除几行。如果传入的消息是类型 300(取决于第一行 2:I300 中的这个标签),我只需要为 ^A 和 ^C 之间的消息执行第一个命令,其中模式 I305 应该在那里。对于 I304,我想执行第二个命令,而对于 I306,我应该执行第三个命令。
1) perl -i -pe 's/:20:(.*)\r\n//g' (for Type 300)
2) perl -i -pe 's/:22:(.*)\r\n//g' (for Type 305)
3) perl -i -pe 's/:(15A|15B):(.*)\r\n//g' (for Type 306)
不知何故,我需要逐条消息地读取文件,即以 ^A 开头并以 ^C 结尾
请注意,我需要使用 perl 命令进行就地替换,而不是创建任何临时文件,因为我想在文件中保留的特殊字符很少。