删除偶数行:
%s/\(^.*$\)\n^.*$/\1/g
删除奇数行:
%s/^.*$\n\(^.*$\)/\1/g
解释:
正则表达式预备知识
注意到,对于正则表达式有
匹配 任意字符 ( 除换行符 ) .
匹配重复零次或多次前一字符 *
匹配集合中任意字符 [...]
匹配不属集合 中 任意字符 [^...]
匹配 行首、行尾 ^, $
匹配 词首、词尾 \<, \>
正则表达式 分组 \(...\)
第 n 个分组内容 \n
匹配重复零次或多次前一字符 *
匹配集合中任意字符 [...]
匹配不属集合 中 任意字符 [^...]
匹配 行首、行尾 ^, $
匹配 词首、词尾 \<, \>
正则表达式 分组 \(...\)
第 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
%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/' 作用就是:删除该行除最后一个字符外的所有字符,保留最后一个字符,也即取得该行最后一个字符。
北京@王帅 10:23:37
把语法的地方去掉 看具体内容
北京@王帅 10:25:18
\( ^. * $ \) \n ^.*$
匹配整个文本\(\)
开头位置字符匹配至结尾 匹配内容为第一个字符0个或者N个 制止改行结束 之后勋章换行符 再之后匹配开头的第一个字符到结束 删除一行.
北京@王帅 10:23:37
把语法的地方去掉 看具体内容
北京@王帅 10:25:18
\( ^. * $ \) \n ^.*$
匹配整个文本\(\)
开头位置字符匹配至结尾 匹配内容为第一个字符0个或者N个 制止改行结束 之后勋章换行符 再之后匹配开头的第一个字符到结束 删除一行.
相关推荐
在正则表达式中,`^\d+$`表示一个匹配非负整数的模式。 - **解释**: - `^`:表示字符串的起始位置。 - `\d`:表示一个数字字符(0-9中的任意一个)。 - `+`:表示前面的元素至少出现一次。 - `$`:表示字符串...
正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和分析字符串模式。在编程领域,它被广泛应用于各种任务,包括数据提取、验证输入、格式化输出以及本例中的代码行计数。本教程将详细介绍如何使用正则...
根据提供的文件信息,我们可以整理出一系列与正则表达式相关的知识点。这些知识点涵盖了从基本的数字验证到复杂的字符串匹配等多个方面。下面是详细的知识点总结: ### 基本概念 正则表达式是一种用于文本模式匹配...
一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行...
- **`{n,m}`**:匹配前一个字符至少 n 次但不超过 m 次。 3. **转义字符**:某些字符在正则表达式中有特殊含义,如果想匹配这些字符本身,需要使用转义字符 `\[character]`。 #### 四、正则表达式在 Java 中的...
1. **元字符**:元字符在正则表达式中具有特殊含义,如`.`代表任意字符,`^`表示行首,`$`表示行尾,`\`用于转义特殊字符,`*`表示前一个字符重复零次或多次,`+`表示至少一次,`?`表示零次或一次,`{n}`表示精确...
2. **完全匹配**:当我们要找到一个完全匹配的字符串时,可以使用正则表达式来实现。例如,如果要在文件中查找字符串`example`,我们可以直接使用`grep 'example' filename`命令。 3. **包含匹配**:包含匹配指的是...
然后构建一个新的正则表达式来删除这些字符。 3. **字符串长度计算**: - 表达式:`String.prototype.len = function() { return this.replace([^\x00-\xff]/g, "aa").length; };` - 功能:此函数可以用来计算...
在RPA(Robotic Process Automation)自动化流程中,正则表达式扮演着至关重要的角色,尤其是在数据处理和验证环节。UiBot是一款常见的RPA工具,它支持正则表达式进行复杂的数据匹配和提取。以下是对一些常用正则...
在这种形式中,正则表达式是通过一个字符串传递给RegExp构造函数创建的。这种方式在编写时比较灵活,因为正则表达式模式可以在运行时动态生成或从外部源(如用户输入)获取。 那么,具体到这两个表达式:`re=new ...
本文将围绕一个特定的正则表达式 `/^([A-Za-z0-9])+$/` 展开讨论,该表达式主要用于验证输入字符串是否仅包含数字和字母。 #### 正则表达式解析 该正则表达式 `/^([A-Za-z0-9])+$/` 可以被细分为几个关键部分进行...
这个表达式确保密码至少包含一个大写字母、一个小写字母、一个数字和一个特殊字符,并且长度在8个字符以上。 然而,仅靠正则表达式可能不足以评估所有安全因素。例如,密码不应包含常见单词、用户个人信息或连续的...
在探讨如何利用正则表达式来判断一个字符串除指定字符外不包含其他特殊字符之前,我们首先需要了解正则表达式的基本概念以及本场景中的具体需求。 ### 正则表达式简介 正则表达式是一种强大的文本处理工具,能够...
`表示零个或一个,`{n}`表示精确匹配n次,`{n,}`表示至少n次,`{n,m}`表示n到m次。 3. **字符类**:`[]`用于定义一个字符集合,如`[abc]`表示匹配a、b或c中的任意一个。 4. **分组与引用**:`( )`用于创建子表达式...
8. Unicode汉字范围:`/^[u4e00-u9fa5],{0,}$/` 和匹配中文字符的正则表达式:`[\u4e00-\u9fa5]` - 这两个正则表达式用于检测字符串中是否包含中文字符。 9. 匹配双字节字符:`[^\x00-\xff]` - 用于识别多字节字符...
正则表达式,简称为正则或regex,是一种强大的文本处理工具,用于匹配、查找、替换和处理字符串。它在编程、数据验证、文本编辑器等多个领域广泛应用,是IT行业中不可或缺的基础知识。 正则表达式的基本概念: 1. *...
7. **只匹配中文的正则表达式**:`/^[\u4e00-\u9fa5]+$/`用于检查字符串是否只包含中文字符。 8. **获取IP地址前三段**:正则`/(?:[0-9]{1,3}\.){2}[0-9]{1,3}/`可以匹配IP地址的前三段。 9. **匹配HTML标签间的...
在IT领域,Linux系统Shell和正则表达式是两个至关重要的工具,它们在日常的系统管理、数据分析和脚本编写中发挥着巨大的作用。本文将深入探讨Linux Shell下的正则表达式,包括其基本概念、元字符、模式匹配以及常用...