我正在尝试example.filename在我的 FreeBSD 服务器上找到 的所有副本。最好/最简单/最有效的方法是什么?
所以当我在 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)
任何想法可能会发生什么?我怎样才能想出在两个系统上都能正常工作的东西?
我正在尝试为从 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 行并替换它很容易,但我很难过。不仅因为那个烦人的结束引号!
我正在尝试使用目标 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 脚本需要它来识别网络连接是否已启动。
通过一些错误配置,我在 /var/mail/root 和 /var/mail/www-data 中有很多电子邮件
如何“循环”这些文件并再次发送每封邮件?
我有一个标准 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 点。
有几个注意事项:
在我花大量时间写这篇文章之前,它是否已经存在?
有时我想从我的 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 范围的文件中选择行?
花式正则表达式扩展将被视为不同的工具(例如awk或perl在必要时,但我希望它是单行的),如果它们使工作更容易。理想情况下,我想要的是
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) 我的计算机上有一个巨大的目录,我需要在里面的每个 ruby 文件中搜索一个字符串。
我可以这样做:grep -R "string" *.rb但它需要很长时间,我想使用 pv(管道查看器)来显示进度条以便能够监控grep进度。
但是我真的不知道我该怎么写这个命令,因为这个命令还有一些我不明白的地方。
有人知道吗?
我需要在我们的邮件日志中搜索特定的电子邮件地址。我们将一个名为maillog的当前文件以及一周的 .bz2 文件保存在同一文件夹中。目前,我正在运行以下命令来搜索文件:
grep person@domain.com maillog
bzgrep person@domain.com *.bz2
Run Code Online (Sandbox Code Playgroud)
有没有办法将grep和bzgrep命令组合成一个输出?这样,我可以将合并的结果通过管道传输到单个电子邮件或单个文件。
我有一个命令可以找到所有包含字符串“Font”的 PDF 文件
find /Users/me/PDFFiles/ -type f -name "*.pdf" -exec grep -H 'Font' '{}' ';'
Run Code Online (Sandbox Code Playgroud)
如何更改此命令以使其相反?查找所有不包含搜索字符串“字体”的 PDF 文件