# 如何快速分离奇偶行的文本？

**URL:** https://meta.appinn.net/t/topic/29274
**Category:** 问题求助
**Tags:** appinned-monthly, 文本处理
**Created:** [2022 年1 月 18 日 02:06 UTC](https://meta.appinn.net/t/topic/29274 "2022-01-18T02:06:29Z")
**Posts on this page:** 1
**Showing post:** 3

<div class="post-metadata">

### 作者： ![dms](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/dms/32/3545_2.png) [@dms](https://meta.appinn.net/u/dms)
#### 发布日期： [2022 年1 月 18 日 02:31 UTC](https://meta.appinn.net/t/topic/29274/3 "2022-01-18T02:31:28Z")

</div>

我一直认为普通用户学一点编程也是极好的，不一定真的写什么程序，但是给自己带来的便利真的是可感知的。

或者退而求其次一些，那么学一些正则表达式也是性价比很高的。

然而……唉，我的教学生意何止门可罗雀，就……嘤嘤嘤

* * *

正经回答，讲一下用正则表达式的方法吧，可能容易理解一些。首先把文件备份好，以防万一搞错，现在我们称最初这份文件为原始文件，简称：源文件。

在源文件里搜索 ：`(.*\n).*\n`，解释一下：

- `.` 代表任意字符
- `*` 表示前面的字符出现 0 或者多次
- 正则表达式默认贪婪匹配，就是说尽可能匹配最长的情况，所以上面两个连起来可以匹配一整行的内容
- `\n` 代表换行
- 现在如果忽略小括号，就很容易看出这是匹配了两行内容。

注意，搜索时要开启对正则表达式的支持。

然后小括号表示分组，现在这里只有一个组，就是第一行的内容，我们用 `$1` 来标识。于是搜索 `(.*\n).*\n` 并替换为 `$1` 就实现了每两行的内容替换为这两行中的第一行，结果就是只剩下了奇数行的内容。

偶数行同理，把分组放后面就行了，记得回源文件重新查找替换。

---

_[View the full topic](https://meta.appinn.net/t/topic/29274)._
