标签: grep

如何在 FreeBSD 中查找文件

我正在尝试example.filename在我的 FreeBSD 服务器上找到 的所有副本。最好/最简单/最有效的方法是什么?

linux freebsd files find grep

14
推荐指数
2
解决办法
5万
查看次数

grep 在 Fedora 和 Ubuntu 上的表现不同

所以当我在 Fedora 中运行它时,我看到了这个:

$ ls hmm_data/indivA12_AATAAG/refs/par1/
2R-orths.alleles  2R-ref.alleles
$ ls hmm_data/indivA12_AATAAG/refs/par1/ | grep -F '-ref.alleles'
2R-ref.alleles
Run Code Online (Sandbox Code Playgroud)

但是当我在 Ubuntu(相同数据)上运行时,我没有从 grep 中得到任何结果:

$ ls hmm_data/indivA12_AATAAG/refs/par1/
2R-orths.alleles  2R-ref.alleles
$ ls hmm_data/indivA12_AATAAG/refs/par1/ | grep -F '-ref.alleles'
Run Code Online (Sandbox Code Playgroud)

任何想法可能会发生什么?我怎样才能想出在两个系统上都能正常工作的东西?

ubuntu bash fedora grep

13
推荐指数
2
解决办法
967
查看次数

如何以编程方式在 sudoers 文件中添加 secure_path

我正在尝试为从 github 构建节点和 npm 的 EC2 实例构建用户数据脚本,然后启动服务。要润滑这些轮子,我需要添加:

:/usr/local/bin
Run Code Online (Sandbox Code Playgroud)

到 /etc/sudoers 中开始的行的末尾:

Defaults        secure_path="
Run Code Online (Sandbox Code Playgroud)

https://superuser.com/questions/927512/how-to-set-path-for-sudo-commands谈到使用 visudo 来实现这一点,但我想在 EC2 用户数据中以编程方式进行。

/sf/ask/1139795261/谈到了编辑 sudoers 文件,但对于我正在尝试的内容来说似乎太过分了达到。

我认为 grep 行并替换它很容易,但我很难过。不仅因为那个烦人的结束引号!

linux grep

13
推荐指数
1
解决办法
6269
查看次数

给定目的地,如何在 LINUX 中获取默认网关?

我正在尝试使用目标 0.0.0.0 获取默认网关

我使用了这个命令:netstat -rn | grep 0.0.0.0

它返回这个列表:

Destination - Gateway      - Genmask         - Flags - MSS - Window - irtt - Iface
10.9.9.17   - 0.0.0.0      - 255.255.255.255 - UH    - 0     0        0    - tun0
133.88.0.0  - 0.0.0.0      - 255.255.0.0     - U     - 0     0        0    - eth0
0.0.0.0     - 133.88.31.70 - 0.0.0.0         - UG    - 0     0        0    - eth0
Run Code Online (Sandbox Code Playgroud)

我的目标是使用目标 0.0.0.0 ping 默认网关;因此,即“133.88.31.70”;但是由于使用了'grep',这个返回了一个列表。

问题是:我如何只获得默认网关?我的 bash 脚本需要它来识别网络连接是否已启动。

grep gateway

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

我怎样才能再次发送/var/mail/root?

通过一些错误配置,我在 /var/mail/root 和 /var/mail/www-data 中有很多电子邮件

如何“循环”这些文件并再次发送每封邮件?

email sendmail grep logging exim

12
推荐指数
2
解决办法
6080
查看次数

从 syslog 日志文件中快速提取时间范围?

我有一个标准 syslog 格式的日志文件。它看起来像这样,除了每秒数百行:

Jan 11 07:48:46 blahblahblah...
Jan 11 07:49:00 blahblahblah...
Jan 11 07:50:13 blahblahblah...
Jan 11 07:51:22 blahblahblah...
Jan 11 07:58:04 blahblahblah...
Run Code Online (Sandbox Code Playgroud)

它不会恰好在午夜滚动,但它永远不会超过两天。

我经常需要从这个文件中提取一个时间片。我想为此编写一个通用脚本,我可以调用它:

$ timegrep 22:30-02:00 /logs/something.log
Run Code Online (Sandbox Code Playgroud)

...并让它从 22:30 开始拉出线路,越过午夜边界,直到第二天凌晨 2 点。

有几个注意事项:

  • 我不想费心在命令行上输入日期,只是时间。该程序应该足够聪明以解决它们。
  • 日志日期格式不包括年份,因此它应该根据当前年份进行猜测,但仍然在元旦前后做正确的事情。
  • 我希望它很快——它应该使用这样的事实,即行是为了在文件中寻找并使用二进制搜索。

在我花大量时间写这篇文章之前,它是否已经存在?

linux log-files grep

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

搜索 CIDR 范围

有时我想从我的 Apache 日志文件中 grep CIDR 范围。这对于落在自然边界(/8、/16 和 /24)上的范围很容易,但对于其他范围(例如 /17 和 /25)就不是那么容易了。

例子:

# 192.168.0.0/16: (easy)
grep " 192\.168\." access_log

# 192.168.128.0/17: (more thought required)
grep -E " 192\.168\.(12[89]|1[3-9][0-9]|2[0-5][0-9])\." access_log

# 192.168.0.0/17: (more thought required)
grep -E " 192\.168\.([0-9]|[0-9][0-9]|1[01][0-9]|12[0-7])\." access_log

# 192.168.128.0/18: (straining my brain)
grep -E " 192\.168\.(1[2-8][0-9]|19[01])\." access_log
Run Code Online (Sandbox Code Playgroud)

这些正则表达式会忽略包含前导零的 IP 地址,例如192.168.001.001,这在 Apache 日志文件中不是问题,但可能在其他日志文件中。打印机似乎特别喜欢前导零。将可选的零添加到正则表达式很容易,但它只会使整个事情变得更加困难。必须有更简单的方法。

有没有一种简单的方法可以从匹配任何 CIDR 范围的文件中选择行?

花式正则表达式扩展将被视为不同的工具(例如awkperl在必要时,但我希望它是单行的),如果它们使工作更容易。理想情况下,我想要的是

grep "[:CIDR 192.168.128.0/18:]" access_log
Run Code Online (Sandbox Code Playgroud)

将 CIDR 范围转换为适当的正则表达式的工具也可以。

$ cidr2regex 192.168.0.0/18
192\.168\.(1[2-8][0-9]|19[01])\.[0-9]{1,3}
Run Code Online (Sandbox Code Playgroud)

或者

$ grep -E "$(cidr2regex …
Run Code Online (Sandbox Code Playgroud)

ip grep regex cidr

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

使用 pv(管道查看器)的 Grep 进度条

我的计算机上有一个巨大的目录,我需要在里面的每个 ruby​​ 文件中搜索一个字符串。

我可以这样做:grep -R "string" *.rb但它需要很长时间,我想使用 pv(管道查看器)来显示进度条以便能够监控grep进度。

但是我真的不知道我该怎么写这个命令,因为这个命令还有一些我不明白的地方。

有人知道吗?

grep pv

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

将多个 unix 命令合并为一个输出

我需要在我们的邮件日志中搜索特定的电子邮件地址。我们将一个名为maillog的当前文件以及一周的 .bz2 文件保存在同一文件夹中。目前,我正在运行以下命令来搜索文件:

grep person@domain.com maillog
bzgrep person@domain.com *.bz2
Run Code Online (Sandbox Code Playgroud)

有没有办法将grepbzgrep命令组合成一个输出?这样,我可以将合并的结果通过管道传输到单个电子邮件或单个文件。

linux unix bash grep

9
推荐指数
2
解决办法
5448
查看次数

如何查找不包含给定搜索字符串的文件

我有一个命令可以找到所有包含字符串“Font”的 PDF 文件

find /Users/me/PDFFiles/  -type f -name "*.pdf" -exec grep -H 'Font' '{}' ';'
Run Code Online (Sandbox Code Playgroud)

如何更改此命令以使其相反?查找所有不包含搜索字符串“字体”的 PDF 文件

linux grep regular-expressions

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

标签 统计

grep ×10

linux ×5

bash ×2

cidr ×1

email ×1

exim ×1

fedora ×1

files ×1

find ×1

freebsd ×1

gateway ×1

ip ×1

log-files ×1

logging ×1

pv ×1

regex ×1

regular-expressions ×1

sendmail ×1

ubuntu ×1

unix ×1