因此,我有一个文本文件,其中始终散布着ASCII STX字符(以\ x02为目标)。如果它们不在行末,我想删除它们。

# This removes all STX characters
sed -i 's/\x02//g' foo.txt

# This removes STX characters that are at the end of a line
sed -i 's/\x02$//g' foo.txt


如果该字符不在行尾,该如何删除?

最佳答案

您可以匹配并捕获需要删除的一个或多个字符之后的任何字符,以便稍后使用反向引用将其还原:

sed -i 's/\x02\{1,\}\(.\)/\1/g' foo.txt


在这里,\x02\{1,\}匹配您需要删除的1个或多个字符,\(.\)将匹配并将任何字符捕获到组1中,而\1将在结果中恢复捕获的字符。

10-04 13:50