Kir*_*son 6 grep pipe function cat
我正在尝试创建一个函数来简化我必须定期使用的日志的 grepping。
我想在管道中使用扩展的正则表达式并重定向输出等。
但是我在使用函数中的标准grep 模式文件语法时遇到了麻烦。
我现在设置它的方式看起来很糟糕,但是可以完成工作:
alias mygrep='cat /path/to/logs/my.log | grep'
Run Code Online (Sandbox Code Playgroud)
这使我可以毫无困难地运行以下内容
mygrep -i -E "WARN|java" |less
Run Code Online (Sandbox Code Playgroud)
似乎正确的实现应该类似于以下内容。
function mygrep () {
args=$*
grep "$args" /path/to/logs/my.log
}
Run Code Online (Sandbox Code Playgroud)
但是,当我将它与上面的搜索和管道参数一起使用时,grep 会返回一个无效的选项错误。
我错过了什么?
dha*_*hag 11
$args
引用了以下代码:
grep "$args" /path/to/logs/my.log
Run Code Online (Sandbox Code Playgroud)
这要求将该变量的整个值作为单个参数传递给 grep。因此,如果调用mygrep
带有参数-i
和
-E
,grep
实际上将接受一个单一的参数-i -E
,这确实是无效的。
以下应该这样做:
function mygrep () {
grep "$@" /path/to/logs/my.log
}
Run Code Online (Sandbox Code Playgroud)
书写"$@"
是正确的:它类似于$*
,不同之处在于它正确地将每个参数扩展为一个单词。
归档时间: |
|
查看次数: |
226 次 |
最近记录: |