파일에서 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