相关疑难解决方法(0)

如何使用多个AND模式运行grep?

我想通过模式之间的隐式AND获得多模式匹配,即相当于在一个序列中运行几个 grep:

grep pattern1 | grep pattern2 | ...
Run Code Online (Sandbox Code Playgroud)

那么如何将其转换为类似的东西?

grep pattern1 & pattern2 & pattern3
Run Code Online (Sandbox Code Playgroud)

我想使用单个 grep,因为我正在动态构建参数,因此所有内容都必须放在一个字符串中。使用过滤器是系统特性,而不是 grep,所以它不是它的论据。


不要将此问题与:

grep "pattern1\|pattern2\|..."
Run Code Online (Sandbox Code Playgroud)

这是一个OR多模式匹配。

grep regular-expression

117
推荐指数
5
解决办法
26万
查看次数

带有位置参数的 Bash -c

通常,$0在脚本中设置为脚本的名称,或者它被调用的任何内容(包括路径)。但是,如果我使用bash-c选项,$0则设置为在命令字符串之后传递的第一个参数:

bash -c 'echo $0' foo bar 
# foo 
Run Code Online (Sandbox Code Playgroud)

实际上,位置参数似乎已经发生了变化,但包括$0. 但是shift在命令字符串中不影响$0(正常):

bash -c 'echo $0; shift; echo $0' foo bar
# foo
# foo
Run Code Online (Sandbox Code Playgroud)

为什么命令字符串的这种明显奇怪的行为?请注意,我正在寻找实施这种奇怪行为背后的原因和基本原理。


人们可以推测这样的命令字符串不需要$0通常定义的参数,因此为了经济起见,它也用于普通参数。但是,在这种情况下, 的行为shift很奇怪。另一种可能性是$0用于定义程序的行为(bash称为 asshvim称为 as vi),但不能如此,因为$0这里仅在命令字符串中可见,而不是在其中调用的程序中可见。我想不出任何其他用途$0,所以我无法解释这一点。

bash

18
推荐指数
2
解决办法
5414
查看次数

标签 统计

bash ×1

grep ×1

regular-expression ×1