我正在研究一个grep缺乏 -r/--recursive 选项的古老 UNIX 。
我需要找到我们的应用程序导致的错误,但我不知道我们的应用程序将错误写入哪个日志文件。但是,我确实知道日志文件位于/opt. 所以我想/opt在*.log. 这是我尝试过的:
find /opt | xargs grep FooErrorMessage
Run Code Online (Sandbox Code Playgroud)
-- 但这不起作用,我不知道在哪里指定我只想要*.log命令中的文件。
假设您有一个包含数万条消息的目录。并且您想将垃圾邮件与非垃圾邮件分开。
具体来说,您希望:
您可以运行什么命令来完成此操作?例如,一些伪代码:
/usr/local/bin/spamassassin -eL ./Maildir/cur/* | grep "X-Spam-Flag: YES" | mv %1 /tmp/spam
Run Code Online (Sandbox Code Playgroud) 我正在拖尾文件输出并搜索具有某些数据的行。我不想将数据输出到屏幕,而是计算它找到的实例数并将其发送到屏幕。实例的数量可以滚动和递增,也可以覆盖现有的并且仅在递增时显示它。那部分并不重要,我只需要找到实例的运行计数。
我现在的命令是
tail -f 日志文件 | grep '我想要的数据'
我试过使用 grep -c 和 wc -l 但没有给我想要的结果。这个特定的 Linux 发行版没有 pv 并且无法获得它。有没有办法做到这一点?
我在下面有一个文本文件
{
"data": {
"assigned-entity-id": null,
"assigned-entity-type": null,
"availability-domain": null,
"compartment-id": "ocid1.tenancy.oc1..dgfmmnusmgibmkdomuijsngimimfimfgiufmgifmdsfsdsgsmgsifmg",
"defined-tags": {
"Oracle-Tags": {
"CreatedBy": "abcd@gmail.com",
"CreatedOn": "2021-03-20T13:26:04.662Z"
}
},
"display-name": "ABC",
"freeform-tags": {},
"id": "ocid1.database.oc1.cd-south-1.amaaaaaago5rdtya6mmvwjfdpdebz7twdxlfdsdssssssaaaaaaadddddd",
"ip-address": "1.1.1.1",
"lifecycle-state": "AVAILABLE",
"lifetime": "XXXXXXX",
"private-ip-id": null,
"public-ip-pool-id": null,
"scope": "REGION",
"time-created": "2021-03-20T13:26:04.748000+00:00"
},
"etag": "cdsssss"
}
{
"data": {
"assigned-entity-id": null,
"assigned-entity-type": null,
"availability-domain": null,
"compartment-id": "ocid1.tenancy.oc1..dgfmmnusmgibmkdomuijsngimimfimfgiufmgifmdsfsdsgsmgsifmg",
"defined-tags": {
"Oracle-Tags": {
"CreatedBy": "abcd@gmail.com",
"CreatedOn": "2021-03-20T13:26:09.523Z"
}
},
"display-name": "ASD",
"freeform-tags": {},
"id": "ocid1.database.oc1.cd-south-1.amaaaaaago5rdtya6mmvwjfdpdezzzzzzzzzzzzzzzzzzzddddddddddddddd",
"ip-address": "2.2.2.2",
"lifecycle-state": "AVAILABLE",
"lifetime": "XXXXXXX",
"private-ip-id": …Run Code Online (Sandbox Code Playgroud) 如何从文件夹中的文件中提取特定行。
基本上我有一个文件夹 /my/cool/folder/myfile.txt
我知道它有一行: I am cool lkasjdfaksldfj
如何在该文件上进行 grep,以便I am cool ....在终端上显示以开头的行?
我正在尝试配置一个启动脚本,该脚本将启动 tomcat,监视 catalina.out 中的字符串“服务器启动”,然后运行另一个进程。我一直在尝试 tail -f 与 grep 和 awk 的各种组合,但还没有任何工作。我遇到的主要问题似乎是在 grep 或 awk 匹配字符串后强制尾部死亡。
我已简化为以下测试用例。
test.sh is listed below:
#!/bin/sh
rm -f child.out
./child.sh > child.out &
tail -f child.out | grep -q B
child.sh is listed below:
#!/bin/sh
echo A
sleep 20
echo B
echo C
sleep 40
echo D
Run Code Online (Sandbox Code Playgroud)
我看到的行为是 grep 在 20 秒后退出,但是尾部将需要另外 40 秒才能死亡。我理解为什么会发生这种情况 - tail 只会在写入管道时注意到管道消失了,这仅在数据附加到文件时发生。由于 tail 将缓冲数据并将 B 和 C 字符作为单个写入输出(我通过 strace 确认了这一点)这一事实使情况更加复杂。我试图用我在其他地方找到的解决方案来解决这个问题,例如使用 unbuffer 命令,但这没有帮助。
有人对如何按照我的预期进行工作有任何想法吗?或者等待Tomcat成功启动的想法(考虑等待TCP端口知道它已经启动,但怀疑这会变得比我现在想要做的更复杂)。我已经设法让它与 awk 一起工作,在比赛中做一个“killall tail”,但我对这个解决方案不满意。注意我试图让它在 RHEL4 上工作。
我想做以下事情:
cat *.xml | grep some_string_here
这告诉我目录中的 xml 文件中是否存在特定字符串。不幸的是,它没有告诉我是哪个文件。
我怎样才能做得更好?cat命令没有看到我有一个向输出添加文件名前缀的开关......
当我打电话
cd /
grep -r "some_str" .
Run Code Online (Sandbox Code Playgroud)
然后我看到屏幕上打印了很多文件,在行尾我看到“:权限被拒绝”。我如何告诉 bash 只在我有权限的文件中搜索。这显然会比标准 grep 快。
我有一个 .xml 文件。里面的标签是:
<Info>Product</Info>
Run Code Online (Sandbox Code Playgroud)
现在,我在文件中有 20 000 个这样的标签。然而,一个标签可以正常启动,但缺少正确的结束标签。如何找到哪一行正确开始但没有以正确的标签结束?
谢谢。
一旦我知道了 IP 地址和端口号组合,我就可以运行它来查看一些数据包:
tcpdump | grep [IPADDRESS]
有人知道我现在如何也能看到原始数据包吗?
谢谢!