作为IT专业人员,我们都致力于通过脚本自动化执行任务。但是,通过使用grep更进一步,可以为脚本添加一层粒度和通用性。
请参阅:TechRepublic Premium编辑日历:IT策略,清单,工具包和研究以供下载(TechRepublic Premium)与数据进行交互是任何IT专业人员的核心功能。每个角色都是独特的,并带来特定的挑战,但是每个角色的核心都具有相同的基本前提:作为IT,我们解释并响应收到的数据,如果数据不准确,我们将采取措施纠正数据流。当我们基于脚本自动执行任务时,通常会根据已知参数完成操作,并提供一组预定的要执行的命令,从而使重复性任务自动化。
这很棒,我全心全意地建议IT专业人员在可能的情况下实现自动化,以最大化性能并限制所有利益相关者的停机时间。但是,如果您可以执行命令或编写脚本来提供信息并根据响应进行更改(执行命令),该怎么办?您可以使用一些逻辑自动执行任务,以使脚本能够解决仅受您的想象力或脚本编写能力限制的各种可能性。
在许多流行的论坛或GitHub中都可以找到这样的脚本,只要经过测试和验证它们可以在您的环境中使用,您肯定应该在可行的情况下实现它们。但是,如果您是自己动手做的类型,希望自己动手学习,或者找不到合适的预先编写的解决方案,我可以向您介绍grep命令吗?
Grep可以在Linux和macOS系统中找到。它也可以作为Windows的可安装软件包使用。
根据macOS中的grep手册页,“ grep实用程序搜索任何给定的输入文件,选择与一个或多个模式匹配的行。” 这意味着grep本质上会搜索与您要查找的一组特定单词或模式匹配的数据。用于搜索grep的输入可能来自提供给实用程序的文件,或者更常见地与执行后通过管道传递到grep的命令输出一起使用,以识别某些数据位。
如前所述,除了可以大幅减少手动搜索文件或命令输出中的特定数据或响应之外,grep还可包含在命令链中,而前一个命令的输出则通过管道输入到grep中以进行筛选。这允许将grep的输出通过管道传递到后续命令中,以对其执行另一个命令,依此类推。与脚本中的其他命令结合使用时,grep可用于从一个文件中读取信息,以确定该命令是否应沿一个方向执行,从而减少了要维护(和更新)的脚本数量。
请参阅:浏览数据隐私(免费PDF)(TechRepublic)
下面,我将提供脚本中使用的grep的一些实际示例,以建立对grep的工作原理的理解,并突出显示grep在其他命令中的表现。由您决定如何将其集成以向脚本添加通用功能。
在下面的示例中,我们希望安装一个名为“ macOS_Update01.pkg”的文件,但希望验证哈希值以确保文件的完整性。我们知道哈希值是“ 9aac9b799f3bb26da66f886024e1af58a1b4d3a7”,按照惯例,我们有一个名为“ hash.sha”的文件,其中存储了SHA1值。通过使用存储在校验和文件中的已知哈希值运行以下grep命令,字符串将对这些值进行检查,并将它们进行比较。如果匹配,终端将在屏幕上输出文件名以确认完整性。
grep 9aac9b799f3bb26da66f886024e1af58a1b4d3a7 hash.sha
在此示例中,我们正在运行一个命令,以确定何时在一组设备上安装当前正在运行的macOS版本。与11.1不匹配的内容将被导出到名为NeedsUpdating.csv的列表中以进行检查。第一个命令的输出将通过管道传递到grep中,以减少符合要求的信息。
sw_vers -productVersion | grep -v 11.1>“ NeedsUpdating.csv”
评论专区