我只想删除后面的一些空格(比如 4 个)line$#*425 with space
我无法完成它,请提出建议
echo "line$#*425 with space " | sed 's/ /\1 \2/g'
我也在考虑使用od -b
但仍然无法弄清楚
我该怎么做
笔记:spaces 可以是普通的 " " 或制表符
编辑:这就是我如何进行测试来检查以下答案
[root@testgfs2 test]$echo -e "line$#*425 with space \t " | sed 's/[[:blank:]]\{4\}$//' | od -b
0000000 154 151 156 145 060 052 064 062 065 040 167 151 164 150 040 163
0000020 160 141 143 145 040 011 040 012
0000030
删除不是发生在空格词之后,而是发生在行尾。制表符(011)还在那里
答案1
您的代码示例似乎与您的问题不符。您的代码示例没有分组,因此\1
不要\2
引用任何内容。这听起来像是您所要求的:
sed 's/space[[:blank:]]\{4\}/space/' <<< "line$#*425 with space "
答案2
将您想要保留的部分放在一个组中。不要忘记在正则表达式中引用需要引用的字符 ( \[.*^$
)。
sed -e 's/\(line\$#\*425 with space\)[ \t][ \t][ \t][ \t]/\1/'
如果您的 sed 不支持\t
表示制表符,请替换\t
为文字制表符。