NO8 find结合sed查找替换企业案例多方法精讲&命令总结!
·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。。。
NO8 find结合sed查找替换企业案例多方法精讲&命令总结!的更多相关文章
- 企业面试题-find结合sed查找替换
题:把/oldboy目录及其子目录下所有以扩展名.sh结尾的文件中包含oldboy的字符串全部替换成oldgirl 解答: 建立测试数据: [root@tan data]# mkdir /oldboy ...
- 转载:如何运用VI编辑器进行查找替换
使用vi编辑器编辑长文件时,常常是头昏眼花,也找不到需要更改的内容. 这时,使用查找功能尤为重要. 方法如下: 1.命令模式下输入“/字符串”,例如“/Section 3”. 2.如果查找下一个,按“ ...
- 企业案例:查找当前目录下所有文件,并把文件中的https://www.cnblogs.com/zhaokang2019/字符串替换成https://www.cnblogs.com/guobaoyan2019/
企业案例:查找当前目录下所有文件,并把文件中的https://www.cnblogs.com/zhaokang2019/字符串替换成https://www.cnblogs.com/guobaoyan2 ...
- sed(查找替换) 与awk(提取字段)
通常: sed 处理列 awk处理行 比较方便 Sed是一个基本的查找替换程序 sed -i "s/^@//g" 文件 #原地操作原文件,进行替换 cat ...
- vi、vim 查找替换
vi/vim 中可以使用 :s 命令来替换字符串.该命令有很多种不同细节使用方法,可以实现复杂的功能,记录几种在此,方便以后查询. :s/vivian/sky/ 替换当前行第一个 vivian ...
- Vi/Vim查找替换使用方法
vi/vim 中可以使用 :s 命令来替换字符串.该命令有很多种不同细节使用方法,可以实现复杂的功能,记录几种在此,方便以后查询. :s/vivian/sky/ 替换当前行第一个 vivian 为 s ...
- [转]Vi/Vim查找替换使用方法
vi/vim 中可以使用 :s 命令来替换字符串.该命令有很多种不同细节使用方法,可以实现复杂的功能,记录几种在此,方便以后查询. :s/vivian/sky/ 替换当前行第一个 vivian ...
- vim查找/替换字符串 及一些高级用法
例: 32 ./run 0_39.pkt 0_39.jpg 33 ./run 0_3.pkt 0_3.jpg 34 ./run 0_40.pkt 0_40.jpg 35 ./run 0_41.pkt ...
- linux sed 批量替换多个文件中的字符
格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径` linux sed 批量替换多个文件中的字符串 sed -i "s/oldst ...
随机推荐
- input文本框自适应文本内容宽度
input文本框自适应文本内容宽度 <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...
- 关于Android file.createNewFile() 方法出现的问题总结(转)
原文:http://blog.csdn.net/wjdarwin/article/details/7108606 今天在编写向SDcard中,创建文件夹并向其中保存文件的过程中出现个一系列的问题 在此 ...
- shell脚本基础及重定向!
重定向: 补充:/dev/null(名叫黑洞)就是把输出的文件混合重定向到黑洞从而不显示在屏幕 yum -y install http &> /dev/null 重定向输入: 重定向输出 ...
- 解题报告:luogu P5745 【深基附B例】数列求和
题目链接:P5745 [深基附B例]数列求和 现在想说:\(O(N)\)的题要不怎么也想不出来,要不灵光乍现,就像这道题. 我们维护一个类似单调队列的加法单调队列: 若相加大于此数,就将队尾元素弹出, ...
- 《iOS设计模式解析》书籍目录
1.你好,设计模式 2.案例分析:设计一个应用程序 3.原型 4.工厂方法 5.抽象工厂 6.生成器 7.单例 8.适配器 9.桥接 10.外观 11.中介者 12.观察者 13.组合 14.迭代器 ...
- VS2010如何在同一个解决方案下建立多个项目以及切换运行不同项目
前言: 在编一些小程序时,往往我们不需要一个问题就建立一个解决方案,我们完全可以让多个项目放在同一个解决方案下,切换启动项运行即可.接下来介绍具体的步骤 一.建立空白解决方案以及添加新项目 1.先建立 ...
- python基本输入输出函数与变量类型
7.python具有三个重要的输出输入函数:print(输出)/eval(转换)/input(输入): 8.对于输出函数print函数的具体使用规则如下:(1)输出字符串:print("字符 ...
- Android开发_*.R文件无法自动生成
问题描述: 今天是我决定专注Android开发的第一天,我在网上下载了一个数独游戏的源码,准备开始着手学习.在导入之后出现Java文件中import *.R文件报错,在gen目 ...
- ODT珂朵莉树
关于ODT,据说是毒瘤lxl发明的,然后毒瘤鱼鱼因为我用ODT误导人D了我一回-- 这是一种基于 \(set\) 的暴力数据结构. 在使用时请注意,没看见这2东西千万别用-- 1.保证数据随机 2.有 ...
- div 浮动
浮动 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <titl ...