regex - 空格如何在 bash shell 中使用 grep 的正则表达式中工作?

标签 regex linux bash grep

我阅读下面正则表达式的方式:

  1. 一个空格符
  2. 一个斜线字符
  3. 一个“n”字符
  4. 零个或多个空格字符
  5. 行尾

但是这个测试失败了:

$ 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/

相关文章:

java - 用于匹配交替序列的正则表达式

正则表达式仅当两个部分都存在时才允许分隔符

regex - 用一个句点替换字符串中的多个句点

c++ - Linux 中的双 UDP 套接字绑定(bind)

linux - os.Mkdir 和 os.Mkdir 所有权限

linux - 如何从不在 %_topdir/SPECS 中的规范文件中获取规范文件路径

python - 使用正则表达式搜索和捕获字符 Python

bash - 处理shell脚本输入中特殊字符的简单解决方案

linux - 从文件中获取行列表

linux - 注销时 bash 如何处理作业?