测试文件的完整内容是否与正则表达式匹配的最佳方法是什么,例如
^[0-9]{9}$
即只有 9 个数字,没有其他任何东西,没有换行符,也没有多组数字。
这是我不太喜欢的一种变体:
cat -vt curloutput.txt | tr "\n" " " | egrep "^[0-9]{9}$"
编辑
我像这样使用公认的解决方案:
grep --perl-regex "(?m)(?<!.)^\d{9}$(?!.)"
使用 GNU grep。
最佳答案
此正则表达式匹配“由 9 位数字组成”,(?m)
使插入符号和美元在换行符之后/之前匹配,因此它可以防止出现多行:
(?m)(?<!.)^\d{9}$(?!.)
环绕主要匹配项的环视确保匹配的行是文件中的唯一行 - 即文件中只有一行。
查看此 demonstrated on rubular ,看看如何将任何其他字符添加到 9 位输入文本,即使是单个换行符,也会导致不匹配
关于正则表达式匹配 bash 中文件的全部内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16936866/