所以我有一个包含 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
将在结果中恢复捕获的字符。
关于regex - 替换除行尾以外的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42146753/