我使用grep在当前目录中查找包含单词"Hello"的任何文件:

grep -l 'hello' *

给定这些文件:

test1

hello
hi
how are you
stuff

test2

welcome
hello
etc

test3

hey
there
hello

输出为:

test1
test2
test3

但是,我想在这些文件中搜索单词"Hello",但跳过第一行和最后一行,因此我的输出是:

test2

我知道我可以使用以下命令忽略第一行和最后一行:

sed '1d;$d' *

但是,有没有办法在grep中使用它,从而忽略每个文件的第一行和最后一行?如果不是,我如何使用grep跳过每个文件的第一行和最后一行呢?

推荐答案

就像这样:

for file in *; do sed '1d;$d' "$file" | grep -q hello && echo "$file"; done

Linux相关问答推荐

仅查找并保留有效邮箱并删除无效记录,AWK

如何在 gcc 搜索路径上防止多个版本的 Boost?

为什么`__vfprintf_internal`(`stdio.h`中的`printfn`)强制`$rbp`在我的x86-64机器上向前跳转6313864字节?

我需要制作一个 awk 脚本来解析文件中的文本.我不确定我是否做得正确

Linux合并文件

tmux:挂起不加载,不响应任何选项命令

PHP factor 30 从 Linux 到 Windows 的性能差异

Stripping linux 共享库

在 Node.JS 中引用相对于应用程序根目录的文件的正确方法

在 Ubuntu 中重启 Nginx

低功耗蓝牙:在 linux 中监听通知/指示

如何使用文件描述符刷新写入?

区分 Windows 和类 Unix 系统的 Makefile

bash中变量名后的2个逗号是什么意思?

如何在 Linux 中查看日志(log)文件并在查看时应用自定义过滤器?

用curl编译php,curl安装在哪里?

如何在 UNIX 中将字符串转换为整数

如何使用mv命令移动特定目录中的文件除外?

CentOS:在 PHP 安装中启用 GD 支持

Linux 上的 NuGet:获取响应流时出错