企业网站首页布局尺寸,在线一键生成网页,网页游戏传奇盛世2,深圳航空公司是国企吗内容:1.sed命令介绍2.语法格式,常用功能查询 增加 替换 批量修改文件名第1章 sed是什么字符流编辑器 Stream Editor第2章 sed功能与版本处理出文本文件,日志,配置文件等增加,删除,修改,查询sed --versionsed -i 修改文件内容第3章 语法格式3.1 语法格式sed [选项] [sed指令… 内容:1.sed命令介绍2.语法格式,常用功能 查询 增加 替换 批量修改文件名第1章 sed是什么字符流编辑器 Stream Editor第2章 sed功能与版本处理出文本文件,日志,配置文件等增加,删除,修改,查询sed --version sed -i 修改文件内容 第3章 语法格式3.1 语法格式sed [选项] [sed指令] [输入文件]sed -i.bak s#oldboy#oldgril#g oldbboy.txt先备份在修改-i ---sed的参数修改-s --sed指令g ---小尾巴/修饰 sed 找谁 干啥找谁----条件(查找)干啥----命令 替换 删除 增加 3.2 命令执行过程sed 特性:默认输出 -n 取消默认输出模式空间:内存中专门为sed腾出的一块地第4章 常用功能4.1 查询:4.1.1 #单行 - 行号显示第几行[rootoldboyedu43-lnb oldboy]# sed -n 3p person.txt 103,Alex,COO 显示包含oldboy的行#包含oldboy的行[rootoldboyedu43-lnb oldboy]# sed -n /oldboy/p person.txt 101,oldboy,CEO‘//’ //内支持正则表达式 过滤内容4.1.2 多行 连续找出第1到3行sed -n ‘1,3p person.ttx’ #显示包含oldboy的行到包含yy的行[rootoldboy-gao oldboy]# sed -n /oldboy/,/yy/p person.txt101,oldboy,CEO102,zhangyao,CTO103,Alex,COO104,yy,CFO 显示文件的第1,4,5行[rootoldboy-gao oldboy]# sed -n 1p;4p;5p person.txt101,oldboy,CEO104,yy,CFO105,feixue,CIO同一行多条命令用;(分号)分隔 小结:1. 行号2. 正则表达式 ‘//p’3. 范围 ‘/oldboy/,/yy/’ 4.2 增加4.2.1 多行增加: \n 换行符 (三种方法)1. 文件的最后一行增加两行106,wuxingge,UFO107,lee,XO1)echoecho -e 106,wuxingge,UFO\n107,lee,XO person.txt2)cat[rootoldboy-gao oldboy]# cat person.txt ha106,wuxingge,UFO107,lee,XOha3) sed 行号a 在文件中某一行追加内容[rootoldboy-gao oldboy]# sed $a106,wuxingge,UFO\n107,lee,XO person.txt 最后一行 a append 追加 --下一行i insert 插入 -----上一行错误[rootoldboy-gao oldboy]# sed 2a gyf is a student\nhes a good boy person.txt ^C三个单引号乱了解决:单引号换双引号 删除 d 一行 4.2.2 不显示文件中空行grep -v ^$ person.txtsed /^$/d person.txtawk !/^$/ person.txtsed -n /^$/!p person.txt !(叹号) sed awk find 中表示取反4.3 替换4.3.1 不加g 将每一行中第一处匹配的字符串进行替换[rootoldboy-gao oldboy]# cat person.txt 101,oldboy,CEO[rootoldboy-gao oldboy]# sed s#[1-9]#AAA#g person.txt|egrep -v ^$ AAA0AAA,oldboy,CEO加g --global 每一行进行全部替换 --- sed指令s的替换标志之一(全局替换)[rootoldboy-gao oldboy]# sed s#[1-9]#AAA# person.txt|egrep -v ^$ AAA01,oldboy,CEO 4.3.2 sed 先备份在修改文件内容sed -i.bak ‘s#[1-9]#AAA#g’ person.txt先把文件备份为person.txt.bak然后再修改文件内容4.3.3 变量替换 双引号识别 ### 把###之间定义变量[rootoldboyedu43-lnb oldboy]# xoldboy 定义x y 两个变量[rootoldboyedu43-lnb oldboy]# yoldgirl[rootoldboyedu43-lnb oldboy]# sed s#$x#$y#g person.txt $x $y 应用变量101,oldgirl,CEO 102,zhangyao,CTO 2. 后项引用 1)把匹配到的内容按规定格式形式[rootoldboy-gao oldboy]# echo 123456|sed -r s#(.*)#\1#g1234562)引用前面匹配到的内容[rootoldboy-gao oldboy]# echo 123456|sed -r s#(.*)#\1#g123456新方法 :表示前面正则匹配到的内容 [rootoldboy-gao oldboy]# echo 123456|sed s#.*##g123456前面每个数字都加上 号[rootoldboy-gao oldboy]# echo 123456|sed s#.##g123456 4.4 新案列:批量修改文件名 命令的拼接把.jpg修改为.avi-rw-r--r--. 1 root root 0 Jan 10 00:24 oldboy01.jpg-rw-r--r--. 1 root root 0 Jan 10 00:24 oldboy02.jpg-rw-r--r--. 1 root root 0 Jan 10 00:24 oldboy03.jpg-rw-r--r--. 1 root root 0 Jan 10 00:24 oldboy04.jpg-rw-r--r--. 1 root root 0 Jan 10 00:24 oldboy05.jpg4.4.1 方法一:命令拼接[rootoldboy-gao oldboy]# ls *.jpg|sed -r s#(.*)jpg#mv \1avi#gmv oldboy01.jpg oldboy01.avimv oldboy02.jpg oldboy02.avi|bash 把前面的输出交给 bash(命令解释器) 执行[rootoldboy-gao oldboy]# ls *.jpg|sed -r s#(.*)jpg#mv \1avi#g|bash[rootoldboy-gao oldboy]# ls *.avioldboy01.avi oldboy03.avi oldboy05.avi oldboy07.avi oldboy09.avioldboy02.avi oldboy04.avi oldboy06.avi oldboy08.avi oldboy10.avi小结:1. 命令拼接--解决不会循环2. 先在屏幕上拼接出目标命令--最终交给bash执行4.4.2 方法二:renamerename from to file 你要替换的内容 替换成什么 替换哪些文件 jpg avi *.jpg [rootoldboy-gao oldboy]# rename jpg avi *.jpg[rootoldboy-gao oldboy]# ls *.avioldboy01.avi oldboy03.avi oldboy05.avi oldboy07.avi oldboy09.avioldboy02.avi oldboy04.avi oldboy06.avi oldboy08.avi oldboy10.avi sed用法小结:1. 排除 !2. 特殊符号获取行号 3. 一条sed语句执行多条命令 ; 4.5 sed命令常见的坑 -ri 和 -ir4.5.1 -r与-i同时使用***-r参数必须在前面-ri正常-ir先把文件备份为xxxr然后再替换文件中的内容4.5.2 -i禁止与-n一起使用会把原文件内容清空 转载于:https://blog.51cto.com/13517084/2069074