“正则表达式基础”实验报告

正则表达式运用之 sed工具命令
  1. 概念
  • sed

**操作步骤:**首先 sed 把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上。sed 每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和显示。处理完输入文件的最后一行后,sed 便结束运行。sed 把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改原文件。

如果要修改原文件,可使用-i 选项。

  1. 实验
  • 将 regular_express.txt 的内容列出并打印行号,同时,将 2-5 行删除显示
    nl regular_express.txt | sed '2,5d'
    
    copy

sed 's/被替换字符串/新字符串/g' 这里我发现了一个小问题:

讲义中的代码为:

/sbin/ifconfig eth0 |grep 'inet '| sed 's/.inet...://g'
copy

出来的结果不是讲义上面说的那样,原因在于我在字符界面下使用,不是图形界面,图形界面会把里面的文字转换成中文显示,而字符界面为纯英文,那么字节就对不上了,所以字符界面应该改为如下命令才能显示正确的结果.

/sbin/ifconfig eth0 |grep 'inet '| sed 's/.inet.....://g' inet后面是五个点
copy

.代表?是一个占位符,看着这个开始的时候会比较蒙,注意大格式是s///g,那么两个反斜杠\是为了转义字符{}的就能明白了

那么整个命令的执行顺序是如何的呢? 代码如下:

/sbin/ifconfig eth0 |grep 'inet '| sed 's/.inet...://g'| sed 's/.\{0,7\}:.*$//g' 这个也是在字符界面才会显示
copy

执行顺序: 第一:先使用ifconfig eth0查看IP代码 第二:然后管道字符,将要标准输出的字符进行抓取,然后查找grep 字符为' inet'的内容 第三:管道后sed来替换掉字符inet包括之后到:的内容 第四:再管道用sed替换IP后面的地址

暂时就想到这么多了,不对的地方希望指正谢谢.

最新评论
暂无评论~