因此,我有一个文本文件,其中始终散布着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
将在结果中恢复捕获的字符。