小编MaQ*_*eod的帖子

仅返回匹配模式后的一行部分

因此,当我使用我正在处理的特定日志集时,拉开一个文件cat然后使用它grep来获取匹配的行只会让我走到这一步。它需要一种将行与模式匹配的方法,但仅在匹配后返回行的部分。比赛前后的部分将始终不同。我玩过使用sedor awk,但无法弄清楚如何过滤该行以在比赛前删除部分,或者在比赛后返回部分,两者都可以。这是我需要过滤的行的示例:

2011-11-07T05:37:43-08:00 <0.4> isi-udb5-ash4-1(id1) /boot/kernel.amd64/kernel: [gmp_info.c:1758](pid 40370="kt: gmp-drive-updat")(tid=100872) new group: <15,1773>: { 1:0-25,27-34,37-38, 2:0-33,35-36, 3:0-35, 4:0-9,11-14,16-32,34-38, 5:0-35, 6:0-15,17-36, 7:0-16,18-36, 8:0-14,16-32,34-36, 9:0-10,12-36, 10-11:0-35, 12:0-5,7-30,32-35, 13-19:0-35, 20:0,2-35, down: 8:15, soft_failed: 1:27, 8:15, stalled: 12:6,31, 20:1 }
Run Code Online (Sandbox Code Playgroud)

我需要的部分是“停滞”后的一切。

这背后的背景是我可以找出某些东西停顿的频率:

cat messages | grep stalled | wc -l
Run Code Online (Sandbox Code Playgroud)

我需要做的是找出某个节点停顿了多少次(由“停顿”之后每个冒号之前的部分表示。如果我只是为此(即 20 :)grep,它可能会返回软失败的行,但是没有停顿,这对我没有帮助。我只需要过滤停顿的部分,这样我就可以从那些停顿的节点中搜索特定节点。

出于所有意图和目的,这是一个带有标准 GNU 核心实用程序的 freebsd 系统,但我无法安装任何额外的东西来提供帮助。

grep sed text-processing

161
推荐指数
3
解决办法
57万
查看次数

当某些路径有空格时,从递归文件列表中创建 md5 哈希

我需要为一个主目录中的每个目录和文件创建一个 md5 哈希。唯一让我无法成功的是找出路径中带有空格的文件的方法。

我正在使用 find 进行递归列表(我已经读过 find 是执行此操作的最佳方法):

c5-26-1# find /root/newdir
/root/newdir
/root/newdir/1
/root/newdir/2
/root/newdir/3
/root/newdir/4
/root/newdir/5
/root/newdir/newdir2
/root/newdir/newdir2/1
/root/newdir/newdir2/2
/root/newdir/new
/root/newdir/dir
/root/newdir/new dir
Run Code Online (Sandbox Code Playgroud)

当我用 md5 尝试这个时,我得到了两种不同的结果,但都不起作用:

c5-26-1# md5 $(find /root/newdir) # same outcome using for loop
MD5 (/root/newdir) = bc79a580f6c932937f6fcd454747db72
MD5 (/root/newdir/1) = 94ca98295946310ce88e185ea57486d5
MD5 (/root/newdir/2) = 8432051f64459be5a5e73dc2abd91795
MD5 (/root/newdir/3) = d41d8cd98f00b204e9800998ecf8427e
MD5 (/root/newdir/4) = d41d8cd98f00b204e9800998ecf8427e
MD5 (/root/newdir/5) = d41d8cd98f00b204e9800998ecf8427e
MD5 (/root/newdir/newdir2) = 722165901468b9596dbdddfe118759fb
MD5 (/root/newdir/newdir2/1) = d41d8cd98f00b204e9800998ecf8427e
MD5 (/root/newdir/newdir2/2) = d41d8cd98f00b204e9800998ecf8427e
MD5 (/root/newdir/new) = 89d042c5f9d6ba485a654b543685ea86
MD5 (/root/newdir/dir) = …
Run Code Online (Sandbox Code Playgroud)

find xargs recursive filenames

6
推荐指数
2
解决办法
1万
查看次数

如何将 date 命令的结果输入 grep 以过滤另一个命令的结果

我需要使用格式化日期命令的结果 (date +"%m/%d") 作为 grep 过滤器来过滤另一个命令的结果,该命令将在系统上显示警报,以便我只能看到来自给定日期的警报.

假设 alertcommand 在控制台中给出警报读数。我知道我可以alertcommand | grep 8/10从今天开始获取日志,但我希望能够提供给date +"%m/%d"它,这样我就不必每次运行它时都指定日期,但我不知道如何链接它合并为一个命令(最好无需创建临时文件或任何内容,因为这将在客户硬件上运行)。

我看了这个类似的问题,但不知道如何让它以同样的方式工作。

shell grep pipe date

3
推荐指数
1
解决办法
2万
查看次数

标签 统计

grep ×2

date ×1

filenames ×1

find ×1

pipe ×1

recursive ×1

sed ×1

shell ×1

text-processing ×1

xargs ×1