我正在尝试从文件中删除 x02 字符,我可以使用sed -i 's/\x2//g'
命令轻松地从文件中删除 x02 。这里的问题是我不想删除立即以 开头的 x02 字符I
。除了我想删除所有其他 x02 字符。
例子:
文件数据:
I^A12^Agop^Bal^BI^A3^B^B4^Aramu^BI^A56^Asubbu^BI^A78^Asai^B
预期输出:
I^A12^Agopal^BI^A34^Aramu^BI^A56^Asubbu^BI^A78^Asai^B
答案1
您可以显式匹配除以下内容之外的任何内容I
:
sed -i 's/\x02\([^I]\)/\1/g
I
这匹配除前面的任何字符的任何字符对,\x02
并将其替换为第二个字符。
答案2
sed -e '
s/\(\x02\)\1\1*//g; # erase 2 or more consecutive STX chars
s/\x02\([^I]\)/\1/g; # erase the STX only if followed by a non-I char
' yourfile