【发布时间】:2017-08-10 16:41:08
【问题描述】:
如何 zgrep 大写模式,因为它是小写的,例如:
zgrep 'MYPATTERN' *.gz
匹配:我的模式
没有:管道、回声、文件或变量。例如:
s="Hello World!"
echo $s # Hello World!
a=${s,,}
zgrep "$a" *.gz
NOR
echo 'MYPATTERN' | sed -e 's/.*/\L&/g' #this line not tested
NOR
zgrep -i 'MYPATTERN' *.gz #option -i is to heavy
目标是在日志文件中搜索一个简单的十六进制字符串,但它们总是以大写形式给出,但以小写形式记录。
收获是在共享删除服务器中进行的,在该服务器中编写函数并不是最好的。我正在寻找一个干净的解决方案。这就是我避免使用管道和变量的原因。
欢迎使用子命令“``”,但其中没有管道或许多命令。
【问题讨论】:
-
@anubhava 不,它是复制粘贴的。或通过鼠标中键粘贴。
-
结合小型、专业化的工具,每个工具都能做好一件事,这就是“UNIX 方式”。要求一种工具可以在没有配置、选项或预处理或后处理的情况下开箱即用地完成您想要的一切是……不合理的,除非您希望该工具成为通用编程语言解释器(并且它的参数包含代码)。
-
(完全不清楚你所说的“写一个函数不是最好的”是什么意思。如果你不知道如何方便地通过 ssh 传递一个函数来运行例如,一个远程系统,这是一个已经在本网站上单独提出和回答的问题,所以如果您明确为什么您认为某个功能不起作用,我们可能会提供一个答案:直接谈到了那个紧迫的问题)。
-
@CharlesDuffy 你所有的论点都毫无意义。好的,Linux 是一个 GNU Linux 系统,它有很多二进制文件,可以帮助你到达你想要的地方。但这并不意味着您应该使用 10 个命令而不是 2 个命令。我的需求对这一点非常清楚。
-
我当然不理解所声称的需要。如果这 10 个命令是解释器的内部命令,但 2 个都是外部命令——需要
mkfifo()、fork()、exeve()、wait()等——那么这 10 个命令在相关命令中的执行速度会快得多案例。对于-i,您根本没有添加任何外部命令。
标签: shell grep pattern-matching zgrep