linux - 使用 Bash 删除具有特定模式的行

标签 linux bash awk sed

我有一个文件,每行一个单词/字符。示例:

a
abandonado
esta
estabelecimento
o
onibus
c
casa
police

我需要删除具有特定模式的行(例如模式“esta”)。我试过 awk

cat file | awk '!/^esta/' 

但此解决方案也删除了所有具有模式 "esta""estabelecimento" 的行。我只需要删除具有特定模式 "esta" 而不是 "estabelecimento" 的行。

具有模式 "o""a" 的行也会出现同样的问题。该命令删除以此模式开头的所有行。

最佳答案

使用 grep 很简单:

grep -v -w esta file
  • -w 选项匹配“仅单词”/“精确单词”:正是您所需要的
  • -v 选项反转匹配:只打印不匹配的行

关于linux - 使用 Bash 删除具有特定模式的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41400430/

相关文章:

linux - 神经节监测

linux - 想在第二个尾部斜杠之前剪切吗?

linux - 如何将 awk 与 for 循环一起使用?

c - 如何在 linux 套接字编程中从服务器向客户端发送和接收字符指针数组 char *argv[]

android - 如何让 init.d 中的脚本在 Android 启动时执行?

c - 为什么 malloc 将 gcc 中的值初始化为 0?

bash - bash 中的 shell 函数是以 shell 上下文还是 fork-n-exec 方式执行的?

linux - 从包含 ANSI 转义属性的 gitlab-runner 输出中解析标记值

linux - "=~"在linux的bash shell中做什么

awk - 使用 Awk 去除空格