正则表达式匹配 bash 中文件的全部内容

标签 regex bash

测试文件的完整内容是否与正则表达式匹配的最佳方法是什么,例如

^[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/

相关文章:

regex - SED 删除带有 REGEX 模式的行

javascript - 用于比较字符串数组的前 n 个字符的正则表达式

linux - 如何在 Linux 中将一些文本 append 到文件夹中的所有文件

bash - 使用 set -e 程序退出状态的一般解决方案

c# - 将相对网址替换为绝对网址

c# - 为什么这个正则表达式不能正确匹配?

php - 是否有一个 PHP 函数可以在应用正则表达式模式之前对其进行转义?

r - R 中 system() 命令中的括号

python子进程: read from pipe without closing it

Bash - 使用临时文件夹中的文件