linux – 如何在远程机器上执行grep并打印出包含这些单词的行?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 如何在远程机器上执行grep并打印出包含这些单词的行?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1864字,纯文字阅读大概需要3分钟。
内容图文
我的machineB中的日志文件很少在这个目录/ opt / ptd / Logs /下面,如下所示 – 我的日志文件非常大.
david@machineB:/opt/ptd/Logs$ls -lt
-rw-r--r-- 1 david david 49651720 Oct 11 16:23 ptd.log
-rw-r--r-- 1 david david 104857728 Oct 10 07:55 ptd.log.1
-rw-r--r-- 1 david david 104857726 Oct 10 07:50 ptd.log.2
我正在尝试编写一个通用的shell脚本,该脚本应该尝试在machineB中解析我的所有日??志文件以获取特定模式并打印具有这些模式的行.我将从machineA运行我的下面的shell脚本,其中包含所有ssh键设置的所有内容,这意味着我需要从machineA远程grep on machineB上的日志文件.
#!/bin/bash
wordsToInclude="hello,animal,atttribute,metadata"
wordsToExclude="timeout,runner"
# now grep on the various log file for above words and print out the lines accordingly
意思是,我将在wordsToInclude变量中用逗号分隔单词 – 如果我的日志包含hello单词然后打印出该行,也打印出包含动物单词的行.与属性和元数据词类似.
而且我将在wordsToExlude变量中用逗号分隔单词 – 如果任何行包含这些单词,则不打印出那些行.
我现在使用上面的格式存储单词,但任何更好的格式对我来说都没问题.我可以在wordsToInclude和wordsToExclude变量中有很长的单词列表,这就是我将它们存储在这些变量中的原因.
我知道如何对一小组变量进行grep.如果我需要直接在machineB上从命令行执行grep,那么我会这样做 –
grep -E 'hello|animal|atttribute|metadata' ptd.log | grep -v 'timeout'
但是我不知道如何在我的shell脚本中将它组合在一起,以便我可以在machineA上的machineB上执行远程ssh grep.
解决方法:
如果您对其他格式持开放态度,请考虑:
inc="hello|animal|atttribute|metadata"
exc="timeout|runner"
ssh machineB "grep -E '$inc' path/ptd.log | grep -vE '$exc'"
更快的替代方案
如果您的日志文件很大并且您正在使用固定单词,而不是花哨的正则表达式,您可能需要考虑这种方法:
inc='hello
animal
atttribute
metadata'
exc='timeout
runner'
ssh office "grep -F '$inc' ptd.log | grep -vF '$exc'"
通过将每个单词放在一个单独的行上,我们可以将grep的-F功能用于固定字符串.这将关闭正则表达式处理,从而加快处理速度.
内容总结
以上是互联网集市为您收集整理的linux – 如何在远程机器上执行grep并打印出包含这些单词的行?全部内容,希望文章能够帮你解决linux – 如何在远程机器上执行grep并打印出包含这些单词的行?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。