regex - egrep 正则表达式操作未按预期工作

标签 regex linux bash grep

我有一个文件,内容如下:

[TEXT_ID=2]
[TEXT_REV=3]
[NO_OF_BYTES=16]
0010002$%!003000040000000010100
[TXT]
FF FF
[TXT_ID=2$@]
[TXT_REV=3]
[NO_OF_BYTES=17]
0010002003000040000000010100
 [TXT]
 FF FF
$%^&

我想识别除 0-9a-zA-ZSpaceEnterTab 作为垃圾字符。

不过,我必须确保 =[] 作为 [CONTEXT=val 的一部分出现时] 行,将是一个有效的字符。但是,如果它出现在任何其他行中,则将是垃圾字符。

例如,在我的文件的第 9 行,如果出现任何 =[],它就是垃圾:

0010002003000040000000010100=[

所以我正在使用以下内容:

egrep -v "^[' '0-9a-zA-Z\t\n\v\f\r]*$|^[ ]*\[[A-Z].*\_*[A-Z]*=*[0-9]*\][ ]*$" SSPR.240, which gives an output as:

0010002$%!003000040000000010100
$%^&

但是它没有考虑这条线:

[TXT_ID=2$@]

如何修改我的 egrep 语句?

最佳答案

你可以试试这样的:

 egrep -v '^([[:space:]]*\[[[:alnum:]_]+=?[[:alnum:]_]*][[:space:]]*|[[:alnum:][:space:]_]*)$' file

关于regex - egrep 正则表达式操作未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36715714/

相关文章:

regex - 如何使用正则表达式将字符串与一种模式而不是另一种模式相匹配?

regex - Apps 脚本正则表达式 - 不区分大小写

php - 苹果推送通知 PHP 服务器带宽

linux - Perl 处理日志文件

python - 来自标签内标签的 Beautifulsoup 文本

php - Mysql REGEXP 搜索产品名称

linux - 有 Linux radio 标准吗?

git - git pull/push 是否支持颜色

arrays - bash 。最快最有效的数组搜索

linux - Ansible azure 模块 azure.azcollection.azure_rm_adgroup_info 的 Azure AD 应用程序权限