我的目标是仅显示最后]
符号后面的文字。
echo MY_TEXT | grep -o "[^\]]*$"
输出只是最后一个符号。 如果我将“]”符号更改为任何字母,它将按预期工作。
示例:
$ echo Hello World | grep -o '[^o]*$'
rld # and this is correct!
$ echo He]ll]o Wo]rld | grep -o "[^\]]*$"
d # but expected: rld
为什么符号o
和]
的行为不同?
提前谢谢。
答案 0 :(得分:3)
您无需转义]
:
echo 'He]ll]o Wo]rld' | grep -o "[^]]*$"
制作:rld
答案 1 :(得分:1)
有几点:[
不需要在字符类中转义,您可以使用--color
查看只有字母匹配,并注意-o
将每个匹配分开新行:
$ echo "He]ll]o Wo]rld" | grep -o '[^]]*$'
rld
$ echo "He]ll]o Wo]rld" | grep --color '[^]]*'
He]ll]o Wo]rld
$ echo "He]ll]o Wo]rld" | grep -o '[^]]*'
He
ll
o Wo
rld
您可以使用]
以及其他许多方式删除tr
字符:
$ echo "He]ll]o Wo]rld" | tr -d ']'
Hello World
答案 2 :(得分:0)
删除了逃脱角色,它对我有用。
$ echo He]ll]o Wo]rld | grep -o "[^]]*$"
> rld