今天总结一个正则的东西匹配和替换的删除奇数行和偶数行来理解模式空间以及模式空间是如何保存、标记数据的

删除偶数行:
%s/\(^.*$\)\n^.*$/\1/g
删除奇数行:
%s/^.*$\n\(^.*$\)/\1/g

其实这是用了一种替换命令即/ab/a/g

g/.*$/+1d 删除偶数行

g/.*$/d|m 这个也可以涉及到了替换、模式空间标记,

删除偶数行的方法如下:

?

1

:g/^/+1 d

上面用到了:gbobal命令,gbobal命令格式如下:

?

1

:[range]global/{pattern}/{command}

global命令实际上是分成两步执行:首先扫描[range]指定范围内的所有行,给匹配{pattern}的行打上标记;然后依次对打有标记的行执行{command}命令,如果被标记的行在对之前匹配行的命令操作中被删除、移动或合并,则其标记自动消失,而不对该行执行{command}命令。{command}可以是一个ex命令,也可以是用|分隔的多个ex命令,这样我们就可以对被标记行,或从标记行寻址到的行进行多种不同的操作。

上面删除偶数行的命令,先匹配所有行,然后隔行删除(其中+1用以定位于当前行的下一行)。为什么是隔行呢?因为在对第一行执行+1 d命令时删除的是第二行,而第二行虽然也被标记了,但已不存在了,因此不会执行删除第三行的命令。

删除几数行的命令如下:

?

1

:g/^/d|m

其中m的作用是移出偶数行的标记,防止偶数行也被删除。

另外删除几数行偶数行,也可以用normal命令,分别为(第一个命令为几数行):

?

1

2

:%norm jkdd

:%norm jdd


%s/\(^.*$\)\n^.*$/\1/g      vi 替换命令谁能帮忙讲一下

全局替换所有去掉特殊符号

\( \)   是所有内容
^  改行开头
^. 开行开头的第一个字符
* 后面跟的字符 
$ 换行
\n 换行
\1  这个不知道啥意思...

\1 是不 是代表第一个保存的字符串啊

不会....

这个正则的功能是隔行删除...

咋实现的  我不知道

悠悠巷口 10:19:33 
\n^.*$/ 这个看不懂

每行开头
有点得字符
至结尾

那它还用\n什么作用

.不是代表有点的字符...
点是通配符..

%s/\(^.*$\)\n^.*$/\1/g      vi 替换命令谁能帮忙讲一下
%s/  语法
\(^.*$\)\n^.*$
/ 语法
\1

/g  语法

解释:

正则表达式预备知识

注意到,对于正则表达式有

匹配 任意字符 ( 除换行符 ) .
匹配重复零次或多次前一字符 *
匹配集合中任意字符 [...]
匹配不属集合 中 任意字符 [^...]
匹配 行首、行尾 ^, $
匹配 词首、词尾 \<, \>
正则表达式 分组 \(...\)
第 n 个分组内容 \n

于是

\1 表示第一个正则表达式分组即\(^.*$\) 我们暂将第一个正则表达式分组\(^.*$\)其记为:A

类推,\2就应该表示第二个正则表达式分组,即 \n^.*$  实际上 也应该写在括号内比较好:\(\n^.*$\) ,我们也暂将第二个正则表达式分组 \n^.*$
记为:B

于是

%s/\(^.*$\)\n^.*$/\1/g

就可以写为:

%s/AB/A/g
即将所有AB都替换成A。

现在我们来分别分析A和B的作用。

A=\(^.*$\)
    抽取出来实际上是\(...\),表示正则表达式 分组,再分析括号内的^.*$,^代表行首,
.匹配 任意字符 ( 除换行符 ) , *匹配重复零次或多次前一字符 ,  $代表匹配到行尾,综合起来就是:匹配这一行

B=\n^.*$
     解释: 
\n换行,^.*$同上,表示匹配这一行,综合起来就是:下一行(即上行结束后开始的另一行)。

再于是就有:%s/AB/A/g 即将所有AB都替换成B  ,代入A和B各自意思得到:

将两行(如行1和行2 )内容替换为第一行内容(即行1的内容),加上/g,就是对全文进行前述替换,也就是隔行删除,如果是从文件第一行开始进行的操作,就意味着是删除所有偶数行、保留所有奇数行操作。


删除偶数行:
%s/\(^.*$\)\n^.*$/\1/g
删除奇数行:
%s/^.*$\n\(^.*$\)/\1/g


补充另一例子: sed 's/\(.*\)\(.\)$/\2/'

\2就应该表示第二个正则表达式分组

同上,也将A=/\(.*\),B=\(.\)$,表达式变为's/AB/B',将AB都替换成B 

分析A、B作用。

A=/\(.*\)      抽取出来实际上是\(...\),表示正则表达式
分组,再分析括号内的 .*,表示匹配任意零个或多个字符 ( 除换行符 )

B=\(.\)$      括号内的 . ,表示匹配 任意字符 ( 除换行符
) ,括号外的$表示匹配到行尾,即表示行尾的最后一个字符;那上述的A /\(.*\)  就表示该行最后一个字符前的所有字符。

于是 sed 's/\(.*\)\(.\)$/\2/'
作用就是:删除该行最后一个字符外的所有字符,保留最后一个字符,也即取得该行最后一个字符。
 
把语法的地方去掉  看具体内容

\(  ^. * $  \)  \n ^.*$
匹配整个文本\(\)
开头位置字符匹配至结尾 匹配内容为第一个字符0个或者N个 制止改行结束   之后勋章换行符  再之后匹配开头的第一个字符到结束 删除一行.

转载于:https://blog.51cto.com/aklaus/1763595

shell 删除奇数偶数行相关推荐

  1. python列表中删除奇数行_shell 删除奇数偶数行

    今天总结一个正则的东西匹配和替换的删除奇数行和偶数行来理解模式空间以及模式空间是如何保存.标记数据的 删除偶数行: %s/\(^.*$\)\n^.*$/\1/g 删除奇数行: %s/^.*$\n\(^ ...

  2. 表格偶数奇数行颜色PHP,HTML-表格的奇数偶数行颜色不同

    /* *Copyright (c) 2017,烟台大学计算机学院 All rights reserved. *文件名称:关于HTML的练习 *作 者:张晴晴 *完成日期:201711月5日 *版 本 ...

  3. HTML表格鼠标滑过变色 和奇数偶数行变色+点击变色

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  4. HTML-表格的奇数偶数行颜色不同

    /* *Copyright (c) 2017,烟台大学计算机学院 All rights reserved. *文件名称:关于HTML的练习 *作 者:张晴晴 *完成日期:201711月5日 *版 本 ...

  5. python输出0到50间的偶数_python奇数偶数行输出_python对输出的奇数偶数排序实例代码...

    我们从小学的时候就学习了奇数偶数,知道整数可以分成奇数和偶数两大类,能被2整除的数叫做偶数,不能被2整除的数叫做奇数.在我们python编程中,会遇到很多数字和代码,有的时候会很乱,不好操作. 在遇到 ...

  6. python奇数偶数行输出_python对输出的奇数偶数排序实例代码

    我们从小学的时候就学习了奇数偶数,知道整数可以分成奇数和偶数两大类,能被2整除的数叫做偶数,不能被2整除的数叫做奇数.在我们python编程中,会遇到很多数字和代码,有的时候会很乱,不好操作. 在遇到 ...

  7. python numpy 奇数偶数行互换_python 列表推导式(经典代码)(21)

    文章首发微信公众号,微信搜索:猿说python 截止到目前为止,python基础内容已经学习了50%左右,在学习编程过程中,我们不仅要学习python语法,同时也需要学习如何把自己代码写的更美观,效率 ...

  8. WPS显示 只奇数偶数行方法

    1.空白行输入: =IF(MOD(ROW(),2)=1,"奇","偶") 2.再自动筛选即可

  9. linux获取偶数行内容,linux命令(39):shell 打印偶数行,奇数行 ,行号

    awk 命令: 1. 打印行号和内容: awk '{print NR":"$0}' 2. 输出:偶数行和奇数行到文件 awk '{print $0.txt > NR%2.tx ...

最新文章

  1. 模拟人类医生,自动生成靠谱医学报告,腾讯医典创新方法入选CVPR 2021
  2. java解压中文乱码_java使用解压zip文件,文件名乱码解决方案
  3. MATLAB中的微积分运算(数值符号)
  4. 提升沟通效率52%  阿里政务钉钉助力政府数字化转型
  5. 作者:李晓明,男,北京大学教授、博士生导师。
  6. Red Hat Enterprise Linux上配置SQL Server Always On Availability Group
  7. Mnist数据集介绍
  8. marlab中主成分得分怎么求_考试后,学生怎么做试卷分析?
  9. WinCE 下鼠标键盘驱动分析
  10. 人人都是产品经理2.0-04章摘要
  11. 增长工程日 | 从战略到战术,如何搭建新消费品牌增长体系
  12. 三国志战略版:登庸令队伍_貂蝉与贾诩的武锋组合
  13. 刷题方法(五步刷题法)
  14. 昆明新迎万枫、菏泽希尔顿花园酒店​开业;万豪在华运营酒店超过400家 | 中国酒店周刊...
  15. 已解决Idea创建maven工程没有src目录的情况
  16. Python基础——计算机组成原理、操作系统概述、编程语言的由来、编程语言分类、python介绍、 安装Cpython解释器、 第一个python程序
  17. 用jquery的each方法遍历json对象
  18. xp系统在哪里查看补丁安装?系统补丁查看方法
  19. OUTLOOK2007不停收邮件,弹出错误,重启outlook
  20. 荣盛发展迈入千亿时代 康旅布局效果凸显

热门文章

  1. vant组件搜索并选择_借助PARTsolutions 选型助手,轻松快速地找到组件。
  2. 关于优酷开放SDk之setOnVideoIndexUpdateListener
  3. HLS Pragma(3)config_storage
  4. Oracle PL/SQL语言初级教程
  5. racle B-Tree和Bitmap索引对比详解
  6. SLF4J: Failed to load class org.slf4j.impl.StaticLoggerBinder
  7. 学习笔记68—PhotoShop常见快捷键
  8. java 实现一段文字中,出现次数最多的字
  9. The python debugger(PDB)的简介
  10. Git 使用帮助(下)