linux - 匹配以特定字母开头并排除某些单词的行

标签 linux bash shell scripting grep

<分区>

我有一个包含一系列如下行的文件:

dbxxx
dbxxxx
dbxx
tdxx
tdxxx
sbxx
sbxxxxx
dbxx_migrated
tdxxx_old

其中 x = 一位数。

我需要创建一个输出,以确保显示以以下内容开头的行:db、td 和 sb,并排除任何具有 _migrated 和 _old 的行。

这可以使用 grep 来完成吗?

最佳答案

您可以使用 awk 组合正则表达式和逻辑运算符:

$ awk '/^(db)|(td)|(sb)/ && !/_(old)|(migrated)/' file
dbxxx
dbxxxx
dbxx
tdxx
tdxxx
sbxx
sbxxxxx

关于linux - 匹配以特定字母开头并排除某些单词的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19574553/

相关文章:

javascript - 在 Node.js 脚本中运行两个脚本

shell - 是否可以从ansible角色/文件目录运行shell脚本?

linux - 使用相对路径查找和复制文件

c - 使用 unix shell 测试系统的字节顺序

bash - 文本文件中一行的非重复条目

bash - 退出函数栈而不退出 shell

linux - 如何在 bash 脚本中启用或禁用多个 "echo statements"

linux - 如何在没有键盘的情况下在 bash 脚本中获取文件名

php - 使用 HTTP2 的 Mpm_itk 的替代品