·sed    #替换  eg: sed 'sed 's#已有的内容#更改的内容#g' oldboy.txt
                   s 代表替换,g代表全局,sg就是全局替换
                   ### 分隔符,可用任意符号替代,但一般用#或/,@。
          一、sed命令:
                 g: 与s联合使用时,表示对当前行全局匹配替换。
                 s: 常说的查找并替换,用一个字符串替换成另一个。
          二、sed选项:
                -e:允许多项编辑。
                -i:修改文件内容。

例子:
·sed 's#oldgirl#jabbok#g' oldboy.txt
·sed 's#已有的内容#更改的内容#g' oldboy.txt
 s###g: s 代表替换,g代表全局,sg就是全局替换
             ### 分隔符,可用任意符号替代,但一般用#或/,@。
       
[root@localhost ~]# echo 'oldboy oldgirl' >oldboy.txt
[root@localhost ~]# cat oldboy.txt
oldboy oldgirl
[root@localhost ~]# sed 's#oldgirl#jabbok#g' oldboy.txt
oldboy jabbok
[root@localhost ~]# cat oldboy.txt        (上面只改了输出,没改文件内容)
oldboy oldgirl
[root@localhost ~]# sed -i 's#oldgirl#jabbok#g' oldboy.txt   (改内容要加-i)
[root@localhost ~]# cat oldboy.txt
oldboy jabbok

·练习:
[root@localhost data]# echo 'oldboy sinsen           (echo命令写入多行)
> oldgirl jabbok
> oldman aden'>>oldboy.txt
[root@localhost data]# cat oldboy.txt
oldboy sinsen
oldgirl jabbok
oldman aden 
[root@localhost data]# sed -e 's#old#new#g' oldboy.txt   (这时还没有改文件内容)
newboy sinsen
newgirl jabbok
newman aden
[root@localhost data]# cat oldboy.txt
oldboy sinsen
oldgirl jabbok
oldman aden
[root@localhost data]# sed -i 's#old#new#g' oldboy.txt    (加-i才是改文件内容)
[root@localhost data]# cat oldboy.txt
newboy sinsen
newgirl jabbok
newman aden

·问题十三:把。oldboy目录及其子目录下所有以扩展名.sh结尾的文件中包含oldboy的字符串全部替换为newboy。【附加题:加分题】。
·解答:
·建立测试:
[root@localhost /]# mkdir -p oldboy/test/a/b/c/d
[root@localhost /]# tree /oldboy
/oldboy
└── test
    └── a
        └── b
            └── c
                └── d

5 directories, 0 files
[root@localhost /]# cd /oldboy
[root@localhost oldboy]# echo "oldboy" >test/del.sh
[root@localhost oldboy]# echo "oldboy" >test.sh
[root@localhost oldboy]# echo "oldboy" >t.sh
[root@localhost oldboy]# echo "oldboy" >.sh
[root@localhost oldboy]# tree
.
├── test
│   ├── a
│   │   └── b
│   │       └── c
│   │           └── d
│   └── del.sh
├── test.sh
└── t.sh

5 directories, 3 files
[root@localhost oldboy]# find /oldboy -type f
/oldboy/test/del.sh
/oldboy/test.sh
/oldboy/.sh
/oldboy/t.sh
[root@localhost oldboy]# touch a b c.txt        (创建其他类型文件)
[root@localhost oldboy]# find /oldboy -type f   (查找所有文件)
/oldboy/test/del.sh
/oldboy/test.sh
/oldboy/.sh
/oldboy/t.sh
/oldboy/a
/oldboy/b
/oldboy/c.txt
[root@localhost oldboy]# find /oldboy -type f -name "*.sh"   (查找.sh结尾的文件)
/oldboy/test/del.sh
/oldboy/test.sh
/oldboy/.sh
/oldboy/t.sh
[root@localhost oldboy]# find /oldboy -type f -name "*.sh"|xargs cat  (查看.sh类型文件里的内容,要把数据当作目标文件处理必须加xargs)。
oldboy
oldboy
oldboy
oldboy
[root@localhost oldboy]# find /oldboy -type f -name "*.sh"|cat  (不加xargs,就直接时当作数据流)
/oldboy/test/del.sh
/oldboy/test.sh
/oldboy/.sh
/oldboy/t.sh
这个效果相当于:
[root@localhost oldboy]# find /oldboy -type f -name "*.sh"|xargs  (先找到.sh类型文件)
/oldboy/test/del.sh /oldboy/test.sh /oldboy/.sh /oldboy/t.sh
[root@localhost oldboy]# cat /oldboy/test/del.sh /oldboy/test.sh /oldboy/.sh /oldboy/t.sh  (再查看.sh文件里的内容)
oldboy
oldboy
oldboy
oldboy

·如何把.sh类型文件里的oldboy替换成newboy呢?
[root@localhost oldboy]# find /oldboy -type f -name "*.sh"|xargs sed 's#oldboy#newboy#g'
newboy
newboy
newboy
newboy
[root@localhost oldboy]# find /oldboy -type f -name "*.sh"|xargs sed -i 's#oldboy#newboy#g'  (经过上面改过输出后再加-i改文件内容)
[root@localhost oldboy]# find /oldboy -type f -name "*.sh"|xargs cat   (查看改后的内容)
newboy 
newboy
newboy
newboy

方法二:
[root@localhost oldboy]# sed -i 's#old#new#g' `find /oldboy -type f -name "*.sh"`
[root@localhost oldboy]# find /oldboy -type f -name "*.sh"|xargs cat
newboy
newboy
newboy
newboy
相当于:sed -i s#old#new#g /olddboy/test/del.sh /oldboy/test.sh /oldboy/.sh /oldboy/t.sh
本文考试看似简单,实际上,考察了一个合格运维人员的命令基本功,大多数人不容易给出3种以上答案。

总结:
1     mkdir       # 创建目录 -p递归
2     touch       # 创建文件
3     ls             # 查看列表目录
4     cd            # 切换目录
5     echo        # 打印
6     cp            # 拷贝目录 -r递归  -a(dpr)
7     vi             # 记事本
8     head        # 头部。查看前N行,默认前10,-n数字
9     rm            # rm -f force  -r 目录
10   cat           # 查文件内容
11   remdir      # 删除空目录
12   grep         # 过滤 -v 排除
13   find          # 查找 -type f   -name "名字"  -mtime =7,7 -7
14   sed          # 增删改查  -i修改  -n取消默认输出  -e多项编辑
                          p  s  g
15   alias        # 修改和设置别名,查看
16   unlias      # 取消别名
17   xargs       # 从标准输出读入创建执行命令 -n 输入数字:分组
18   awk         # -F 指定分隔符  NR行号  {print $1 $2}
19   seq         # sequence 打印序列 
                      -s指定分隔符
                      seq 10 默认每个数字后键入回车,就是竖着排
                     [root@localhost oldboy]# seq -s "=" 10
                    1=2=3=4=5=6=7=8=9=10
20   pwd        # 打印当前目录
21   tree        # 显示目录树。安装:yum install tree -y
22   tr        
23   tail         # 尾部 查看后N行,默认后10,-n数字
24   vim        # 复杂编辑器,一般用于开发(写shell,python)
25   mv        # 移动目录或文件名,改名

必须掌握的命令:
man,touch,ls,mkdir,cp cd,rm,mv,echo,pwd,cat,alias,unalias,head,tail,tree,rmdir,find,xargs,awk,sed,grep,vi,vim,seq。。。

最新文章

  1. 移动端开发viewport深入理解(转)
  2. SpringNet学习笔记一
  3. Linux驱动学习步骤(转载)
  4. Window nginx+tomcat+https部署方案 支持ios9
  5. Technical diagrams for SharePoint 2013
  6. 使用Keytool工具生成证书Keystore和证书签名请求文件
  7. linux使用技巧(shell/vi/screen)
  8. VMWare11虚拟机安装OSX10.9系统资源下载及问题解决
  9. VPS服务器利用WINSCP软件进行SFTP管理服务器文件
  10. Android之IPC(aidl)
  11. [Bayesian] “我是bayesian我怕谁”系列 - Variational Autoencoders
  12. Python 安装 (win10)
  13. spring微服务架构-脑图
  14. BZOJ3502PA2012Tanie linie&BZOJ2288[POJ Challenge]生日礼物——模拟费用流+链表+堆
  15. Java中excel转换为jpg/png图片 采用aspose-cells-18.6.jar
  16. catch data
  17. 《DSP using MATLAB》Problem 5.32
  18. CruiseControl 安装配置
  19. springboot 1.3.5升级1.5.9后 默认使用tomcat 8.5版本 get请求报400 异常信息为 The valid characters are defined in RFC 7230 and RFC 3986
  20. 使用DataSource绑定一维数组时,DataTextField只需绑定空字符串

热门文章

  1. Python中的进制表示方式及转换方法
  2. Codeforces Round #581 (Div. 2)D(思维,构造,最长非递减01串)
  3. MPAndroidChart柱子上的文字的颜色dataSet.setValueTextColors
  4. 谈谈spring mvc与struts的区别
  5. SRS源码——调用FFmpeg参数问题
  6. 问题解决 : org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
  7. 「CF852D」Exploration Plan
  8. SpringBoot 处理异常的几种常见姿势
  9. 你需要知道的 JavaScript 类(class)的这些知识
  10. redis的并发set