关于使用shell脚本循环处理文本的问题

公司是使用puppet来进行配置管理, 某天修改完puppet后领导回复:

我们有一个文档cabinet.txt记录了物理机器所在的机柜, 除了文档里的其他机器都是虚拟机或云服务器, 对虚拟机的puppet配置文件使用git还原为上一个版本, 不过机器数量非常多, 所以想能否使用脚本来跑一下, 没有想象中的那么麻烦, 很简单的一个shell脚本即可实现目的.

脚本如下:

#!/bin/bash

for i in `ls manifests`
do
  j=`echo $i | sed 's/.nutscloud.com.pp//g'`
  if [ `grep -c $j cabinet.txt` -eq 0 ];then
    echo $j
    git checkout HEAD^ manifests/$i
  fi
done

执行结果:

现在在vscode里面可以看到很多修改, 把他们提交就完事了~

其实有时候做一些小工具并没有那么的难, 可能会觉得只用一次不如手撸方便, 但是运行一下所有事情都做完这种感觉是手撸给不了你的.

到此这篇关于关于使用shell脚本循环处理文本的问题的文章就介绍到这了,更多相关shell脚本处理文本内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Shell脚本如何逐行处理文本文件

    经常会对文体文件进行逐行处理,在Shell里面如何获取每行数据,然后处理该行数据,最后读取下一行数据,循环处理.有多种解决方法如下: 1.通过read命令完成. read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量,用 IFS(内部字段分隔符)变量中的字符作为分隔符.VariableName (变量名)参数指定给每一个字段的值,由 VariableName (变量名)参数指定的以此类推,直到最后一个字段. read命令接收标准输入,或其他文件描述符的输入,得到输入

  • Shell脚本学习指南之文本处理工具

    4.1 排序文本 4.1.1 行的排序未提供命令行选项时,整个记录会根据当前locale所定义的次序排序.在传统的C locale中,也就是ASCII顺序. 4.1.2 以字段排序-k选项的后面接着的是一个字段编号,或者是一对数字.每个编号后面都可以接一个点号的字符位置,或修饰符字母. 如果仅指定一个字段编号,则排序键值会自该字段的起始处开始,一直继续到记录的结尾(而非字段的结尾). 如果给的是一对用逗号隔开的字段数字,则排序键值将由第一个字段值的起始处开始,结束于第二个字段值的结尾.使用点号表

  • shell文件处理笔记之插入文本到文件的方法

    前言 众所周知,如果在大多数服务器上,不会预先装上 ruby 或者 python 这些语言.这时,你要想操作一些文件,一个合理的选择就是使用 shell.也就是你在 terminal中输入的那些指令.本文给大家想写介绍了关于插入文本到文件的相关内容,下面话不多说了,来一起看看详细的介绍: 首先,打开你的 Terminal. 改写文件 如果你刚刚创建了一个文件,比如touch a.txt,a 里面现在是空的.你想要往里面加上一句话,怎么操作.你可以打开文件,用 vim,用 atom 都可以.但你要

  • Shell文本处理三剑客之sed的使用

    sed 是 stream editor 的缩写,流编辑器,主要用于对标准输出或文件进行处理. 语法: stdout | sed [option] "pattern command" sed [option] "pattern command" file1 常用选项(option) # -n 只打印静默模式匹配行,而不输出原行 # p 是打印命令 ➜ sed '/hello/p' helloWorld.sh #!/bin/bash HELLO bash echo &q

  • 关于使用shell脚本循环处理文本的问题

    公司是使用puppet来进行配置管理, 某天修改完puppet后领导回复: 我们有一个文档cabinet.txt记录了物理机器所在的机柜, 除了文档里的其他机器都是虚拟机或云服务器, 对虚拟机的puppet配置文件使用git还原为上一个版本, 不过机器数量非常多, 所以想能否使用脚本来跑一下, 没有想象中的那么麻烦, 很简单的一个shell脚本即可实现目的. 脚本如下: #!/bin/bash for i in `ls manifests` do j=`echo $i | sed 's/.nut

  • 利用Shell脚本循环读取文件中每一行的方法详解

    前言 本文主要给大家介绍了关于使用Shell脚本循环读取文件每一行的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 一.使用for循环 for line in `cat filename` do echo $line done 或者 for line in $(cat filename) do echo $line done 二.使用while循环 while read -r line do echo $line done < filename While循环中rea

  • 通过shell脚本循环进入目录执行命令的方法

    公司需要部署一套新的环境,新环境里面好多项目,整体目录结构如为:/webserver/* 所有的项目都在webserver目录下,其中有laravel和thinkphp项目的代码. laravel框架中, 根目录下storage vendor bootstrap 目录需要设置777权限. thinkphp框架,根目录App下Runtime目录需要设置777权限. 因此相对应的目录结构如下; laravel框架的目录结构为:/webserver/aaa/www/storage,vendor,boo

  • Shell脚本编程30分钟入门(小结)

    什么是Shell脚本 Shell脚本(英语:Shell script),又称Shell命令稿.程序化脚本,是一种电脑程序与文本文件,内容由一连串的shell命令组成,经由Unix Shell直译其内容后运作.被当成是一种脚本语言来设计,其运作方式与直译语言相当,由Unix shell扮演命令行解释器的角色,在读取shell脚本之后,依序运行其中的shell命令,之后输出结果.利用shell脚本可以进行系统管理,文件操作等. 示例 看个例子吧: #!/bin/sh cd ~ mkdir shell

  • Shell脚本的条件控制和循环语句

    条件判断:if语句 语法格式: if [ expression ] then Statement(s) to be executed if expression is true fi 注意:expression 和方括号([ ])之间必须有空格,否则会有语法错误. if 语句通过关系运算符判断表达式的真假来决定执行哪个分支.Shell 有三种 if ... else 语句: if ... fi 语句 if ... else ... fi 语句 if ... elif ... else ... f

  • shell中循环调用hive sql 脚本的方法

    脚本tt.sh的内容如下: #!/bin/bash params=$1 for param in $params do echo $param done 运行方式为:sh tt.sh "1 2 3 4 5" 输出为: 1 2 3 4 5 所以参考上面的命令,可以把hql的脚本写为如下方式,就可以循环执行sql: 功能:查找字符串 comments 中的param第一次出现的位置 ,返回的是位置数字 #!/bin/bash params=$1 for param in $params d

  • shell for循环、循环变量值付给其他shell脚本的方法

    本文主要将在shell中如何编写for循环,并将循环变量作为下个shell脚本的参数. shell for 循环: #!第一种写法 类似C.Java for ((i=1; i<=100; i ++)) do echo $i done #!第二种写法 in应用 for i in {1..100} do echo $i done #!第三种写法 seq 使用 for i in `seq 1 100` do echo $i done 将循环变量赋值到下一个脚本: 在运行shell脚本时候,有三种方式来

  • shell脚本实战-while循环语句

    前言 上文我们讨论了for循环的使用,在有限循环里,我们使用for循环是很方便的一件事情,今天我们来探讨下while循环 while循环语句的语法分析 语法格式一: while [条件] do 操作 done 语法格式二: while read line do 操作 done < file 通过read命令每次读取一行文件,文件内容有多少行,while循环多少次 注意:只有表达式为真,do和done之间的语句才会执行,表达式为假时,结束循环(即条件成立就一直执行循环) 例如: while tru

  • 快速入门Shell脚本之条件判断语句与循环

    相信大家已经对shell脚本有一定的了解了,大家对于shell脚本的条件判断语句一定非常期待.本篇博客,我们来聊一聊关于shell的条件判断语句与循环. 1.条件判断 1.1基本语法 [condition] 注意: condition前后要有空格 条件非空既为true,[atguigu]发回true,[]返回false 1.2.常用的判断条件 (1)两个整数之间比较 = 字符串比较 -lt 小于(less than) -le 小于等于(less equal) -eq 等于(equal) -gt

  • shell脚本for循环实现文件和目录遍历

    一个for循环实现一个目录下的文件和目录遍历,很实用 [root@localhost shell_order]# cat test27.sh #!/bin/bash #print the directory and file for file in /home/hustyangju/* do if [ -d "$file" ] then echo "$file is directory" elif [ -f "$file" ] then echo

随机推荐