当前位置: 首页 > news >正文

网站建设公开课镇江网页设计

网站建设公开课,镇江网页设计,编程是什么课程内容,建筑培训网官网查询文章目录八、shell编程之sed8.1 工作原理8.2 sed基本语法8.3 模式空间中的编辑操作8.3.1 地址定界8.3.2 常用编辑命令8.4 sed扩展八、shell编程之sed 8.1 工作原理 sed是一种流编辑器,它是文本处理中非常有用的工具,能够完美的配合正则表达式使用&…

文章目录

    • 八、shell编程之sed
      • 8.1 工作原理
      • 8.2 sed基本语法
      • 8.3 模式空间中的编辑操作
        • 8.3.1 地址定界
        • 8.3.2 常用编辑命令
        • 8.4 sed扩展

八、shell编程之sed

8.1 工作原理

sed是一种流编辑器,它是文本处理中非常有用的工具,能够完美的配合正则表达式使用,处理时,把当前处理的行存储在临时缓冲区中,称为模式空间,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变。
在这里插入图片描述

sed的特点:
(1)sed命令是将一系列的编辑命令应用于一批文本的理想工具。

(2)sed命令是一个非交互式的文本编辑器,它可以对来自文本文件以及标准输入的文本进行编辑。其中,标准输入可以是来自键盘、文件重定向、字符串、变量或者是管道的文本。

(3)sed命令会从文件或者标准输入中一次读取一行数据,将其复制到缓冲区(最多8192字节),然后读取命令行或者脚本的编辑子命令,对缓冲区中的文本行进行编辑。重复此过程,一直到所有的文本行都处理完毕。

8.2 sed基本语法

sed OPTIONS… [SCRIPT] [INPUTFILE…]

常用的选项:

 
-n,--quiet,--silent:不输出模式空间中的内容,使用安静模式,在一般sed的用法中,所有来自STDIN的数据一般都会被列出到屏幕上,但如果加上-n参数后,则只有经过sed特殊处理的那一行才会被列出来;-i:直接编辑原文件,而不是由屏幕输出,默认不对原文件进行操作; 
-e:直接在命令行模式上进行sed的动作编辑,多个子命令之间也可以用分号隔开; sed -e 'command1;command2... filename 或者 sed -e 'command1' -e 'command2' ……filename 
-r:使用扩展正则表达式; 
-f:直接将sed的动作写在一个文件内,-f filename则可以执行filename内的sed动作。

8.3 模式空间中的编辑操作

8.3.1 地址定界

1)#:#为数字,指定要进行处理操作的行;1,表示第一行;

2)$:表示最后一行,多个文件进行操作的时候,为最后一个文件的最后一行;

3)/regexp/:表示能够被regexp匹配到的行;
regexp即基于正则表达式的匹配;

4)/regexp/I:匹配时忽略大小写;

5)%regexp%: 任何能够被regexp匹配到的行,换用%(用其他字符也可以,如:#)为边界符号;

6)addr1,addr2:指定范围内的所有的行(范围选定);
常用地址定界表示方式:
a)0,/regexp/:从起始行开始到第一次能够被regexp匹配到的行。
b)/regexp/,/regexp/:被模式匹配到的行内的所有的行。

7)first~ step:指定起始的位置及步长,例如:1~2表示1,3,5…
8)addr1,+N:指定行以及以后的N行;
     addr1,~N:指定行开始的N行;

注意事项:
1、如果没有指定地址,表示命令将应用于每一行
2、如果只有一个地址,表示命令将应用于这个地址匹配的所有行
3、如果指定了由逗号分隔的两个地址,表示命令应用于匹配第一个地址和第二地址之间的行(包括这两行)
4、如果地址后面跟有感叹号,表示命令将应用于不匹配该地址的所有行

8.3.2 常用编辑命令

1)d:删除匹配到的行
2)p:打印当前模式空间内容
3)a \text:append,表示在匹配到的行之后追加内容
4)i \text:insert,表示在匹配到的行之前追加内容
5)c \text:change,表示把匹配到的行和给定的文本进行交换
6)s/regexp/replacement/flages:查找替换,替换regexp匹配到的内容(其中/可以用其他字符代替,例如@)

其他编辑命令:
常用的flages:
g:全局替换,默认只替换第一个
i: 不区分大小写
p:如果成功替换则打印

7)r 读入文件内容追加到匹配行后面
8)R 读入文件一行内容追加到匹配行后面
9)y :y/source/dest/ 固定长度替换,要求替换的字符串长度相等
10)w /path/to/somefile:将匹配到的文件内容追加到指定的文件末尾

sed 's/north/hello/' datafile --替换每行第一个north 
sed 's/north/hello/g' datafile --全部替换 
sed '1 s/north/hello/g' datafile --替换第一行所有的north 
sed '1 s/north/hello/' datafile --替换第一行第一个north 
sed '1 s/north/hello/2' datafile --只替换第一行第二个north 

巧用替换删除内容(不是删除行)

sed 's/north//' datafile --删除所有行的第一个north 
sed 's/north//g' datafile --删除全部的north 
sed '1 s/north//2' datafile --删除第一行第二个 
sed 's/^.//' datafile --删除每行第一个字符 
sed 's/^\(..\)./\1/' datafile --删除第3个字符 
sed 's/^\<[a-zA-Z0-9]*\>//' datafile --删除每行第一个单词

8.4 sed扩展

在这里插入图片描述

cat >person.txt<<KOF 
> 101,chensiqi,CEO 
102,zhangyang,CTO 
103,Alex,COO 
104,yy,CFO 
105,feixue,CIO 
KOF 

sed如何取不连续的行

sed -n '1p;3p;5p' person.txt 

特殊符号{}的使用

sed -n '2,4p;=' person.txt //命令说明:-n去掉默认输出,2,4p,输出2到4行内容,=输出全部的行的行号 
sed -n '2,4{p;=}' person.txt //命令说明:‘2,4{p;=}’代表统一输出2,4行的行号和内容 

拓展:

[root@localhost test6]# seq 6 | sed ':a;N;s/\n/,/;b a' 
1,2,3,4,5,6 
[root@localhost test6]# seq 6 | sed ':a;N;s/\n/,/;t a' 
1,2,3,4,5,6 

8.5 sed案例
1、把/etc/passwd 复制到/root/test.txt,用sed打印所有行;

[root@localhost ~]# sed -n '1,$p' test.txt 
[root@localhost ~]# sed -n p test.txt 

2、打印test.txt的3到10行;

[root@localhost ~]# sed -n '3,10'p test.txt 

3、打印test.txt 中包含’root’的行;

[root@localhost ~]# sed -n '/root/p' test.txt

4、删除test.txt 的15行以及以后所有行;

[root@localhost ~]# sed -i '15,$d' test.txt 
[root@localhost ~]# sed -e '15,$d' test.txt(只会在命令行删除,不会真的删除原文件内容)等 
同于[root@localhost ~]# sed '15,$d' passwd 

5、删除test.txt中包含’bash’的行;

[root@localhost ~]# sed '/bash/'d test.txt 

6、替换test.txt 中’root’为’toor’;

[root@localhost ~]# sed 's/root/toor/g' test.txt 

7、替换test.txt中’/sbin/nologin’为’/bin/login’;

[root@localhost ~]# sed 's#/sbin/nologin#/bin/login#' test.txt 

8、删除test.txt中5到10行中所有的数字;

[root@localhost ~]# sed '5,10s/[0-9]//g' test.txt 

9、删除test.txt 中所有特殊字符(除了数字以及大小写字母);

[root@localhost ~]# sed 's/[^0-9a-zA-Z]//g' test.txt 

10、在test.txt 20行到末行最前面加’aaa:’

[root@localhost ~]# sed '20,$s/^.*$/aaa:&/g' test.txt 

11、复制/etc/grub2.cfg到/root/grub2.cfg,删除文件中所有以空白开头的行行首的空白字符;

[root@localhost ~]# sed 's/^[[:space:]]//' grub2.cfg 

12、删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符

[root@localhost ~]# sed 's/^#[[:space:]]*//' /etc/fstab 

13、给文件/root/anaconda-ks.cfg每一行行首增加#号

[root@localhost ~]# sed 's/^.*$/#&/' /root/anaconda-ks.cfg 

14、在/etc/fstab文件中不以#开头的行的行首增加#号;

[root@localhost ~]# sed 's/^[^#]/#&/' /etc/fstab 

15、处理/etc/sysconfig/network-scripts/路径,使用grep和sed命令取出其目录名和基名

[root@localhost ~]# echo "/etc/sysconfig/network-scripts/" |sed -r 
's#^/(.*)/(.*)/#\1#' etc/sysconfig 
[root@localhost ~]# echo "/etc/sysconfig/network-scripts/" |sed -r 
's#^/(.*)/(.*)/#\2#' 
network-scripts 
[root@localhost ~]# echo "/etc/httpd/conf.d/host.conf" | sed -r 's#(^/.*/) 
[^/].*#\1#' 
/etc/httpd/conf.d/ 
[root@localhost ~]# echo "/etc/httpd/conf.d/host.conf" | sed -r 
's#^/.*/([^/].*)#\1#' 
host.conf 
[root@localhost ~]# basename /etc/httpd/conf.d/host.conf 
host.conf 
[root@localhost ~]# dirname /etc/httpd/conf.d/host.conf 
/etc/httpd/conf.d 
[root@localhost ~]# echo "/etc/sysconfig/network-scripts/"|grep -o -E "[^/]+/? 
$"|grep -o -E "^[^/]+" 
network-scripts 
[root@localhost ~]# echo "/etc/sysconfig/network-scripts/"|grep -o -E " 
(^/([^/]+/)*[^[:space:]])|^/"|grep -o -E "^/([^/]+/)*"|grep -o -E "(/[^/]+)+|^/" 
/etc/sysconfig 

16、利用sed 取出ifconfig命令中本机的IPv4地址

[root@localhost ~]# ifconfig |sed -n '2p' | sed -r "s/.*inet[[:space:]]*//" | 
sed -r "s/[[:space:]]*netmask.*//" 
192.168.168.128 

17、统计centos安装光盘中Package目录下的所有rpm文件的以.分隔倒数第二个字段的重复次数

[root@localhost ~]# ls /mnt/Packages/|grep "rpm$"|sed -r 's@.*\. 
(.*)\.rpm@\1@'|sort|uniq -c 1085 i686 1216 noarch 2319 x86_64
http://www.shuangfujiaoyu.com/news/3494.html

相关文章:

  • 做汽车销售要了解的网站腾讯营销平台
  • 龙岗区布吉街道防控措施专注于seo顾问
  • 如何识别网页用什么网站做的郑州网站优化公司
  • 网站前端工资国外网站开发
  • 网站建设基本流程备案免费友情链接网页
  • 给人做传销网站网站收录有什么用
  • 洛阳网站建设成人编程培训机构排名前十
  • 网站建设宣传淘宝关键词优化工具
  • 做海外市场什么网站推广怎么去推广一个产品
  • c#网站开发需要的技术注册百度推广账号
  • php网站开发实例教程码源网站如何进行seo
  • 网站有些网页收录了为什么排名还是很靠后啊seort什么意思
  • 编辑网站绑定 主机名天津疫情最新消息
  • 企业展厅公司yoast seo教程
  • seo托管seo怎样
  • 官方网站下载拼多多app竞价排名是什么
  • 济南手机网站百度搜题在线使用
  • 建设短视频网站今日新闻头条大事
  • 东莞沙田最新消息seo推广工具
  • 网站的交互设计有什么陕西seo推广
  • 框架网站模板seo的方式有哪些
  • 织梦网做网站步骤北京网站优化对策
  • 长春火车站进站需要核酸检测吗公司网络优化方案
  • 建立个人网站的目的相似图片在线查找
  • 辽宁做网站和优化网络营销什么意思
  • 旅游网站介绍怎么写识别关键词软件
  • 做新闻网站服务器选购2022最火营销方案
  • wordpress缺陷谷歌seo新规则
  • wordpress源代码怎么看seo优化关键词
  • 商务互联做网站怎么样竞价托管 微竞价