我阅读下面正则表达式的方式:
- 一个空格符
- 一个斜线字符
- 一个“n”字符
- 零个或多个空格字符
- 行尾
但是这个测试失败了:
$ echo "Some Text \n " | grep " \\n *$"
如果我在正则表达式中删除一个空格,不会失败
$ echo "Some Text \n " | grep "\\n *$"
Some Text \n
最佳答案
试试这个:
echo "Some Text \n " | grep ' \\n *$'
注意单引号。这serverfault question有更多关于单引号和双引号的信息。使用单引号时,字符串按字面意思处理。
这是一个解释。当你这样做时:
echo "Test\n"
,您将得到 Test\n
作为输出,因为 echo
不会转换转义序列 (除非你向它发送 -e
标志)。
echo "测试\n"| grep '\n'
,它只匹配n
。这是因为 \n
是一个“转义的 n”(它似乎没有转换成实际的换行符)。如果你想让它匹配 \
和 n
,你需要做 echo "Test\n"| grep '\\n'
.
关于regex - 空格如何在 bash shell 中使用 grep 的正则表达式中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5640684/