Debian/类Unix文本处理

来自站长百科
跳转至: 导航、​ 搜索

Debian | Debian安装 | Debian使用 | Debian系统升级 | Debian常见问题

在类 Unix 的系统中,有几个文本处理工具经常用到。

文本处理[ ]

正则表达式的方法有:

  • head 显示文件的开始部分。
  • tail 显示文件的结尾部分。
  • sort 给文件中的每一行排序。
  • uniq 删除文件中重复的行。
  • tr 转换或者删除字符。
  • diff 把文件中的内容一行一行的比较。

基本的正则表达式 Basic regular expression (BRE) :

  • grep 按模式匹配文本。
  • ed 一个原始的行编辑器
  • sed 一个流编辑器。
  • vi 一个屏幕编辑器。
  • Emacs 一个屏幕编辑器。

扩展的正则表达式 Extended regular expression (ERE) is used:

  • egrep 按模式匹配文本。
  • awk 进行简单的文本处理。
  • perl 做非常难以想像的文本处理。

正则表达式[ ]

正则表达式用在很多文本处理工具里面。它们和 shell 的通配符比较相似,但是它们更复杂也更强大。

正则表达式是由文本字符和元字符组成的,用来描述匹配模式。元字符是有特殊意义的字符。它们有两种主要的形式 BRE 和 ERE,主要取决于类 Unix 文本处理。

在扩展的正则表达式(EREs)里面元字符包括"\ . [ ] ^ $ * + ? ( ) { } |"。正则表达式表示:

  • c

这个用来匹配非元字符 "c".

  • \c

这个用来匹配原本的字符"c".

  • .

这个用来匹配任意字符包括换行符。

  • ^

这个用来匹配字符串的开始。

  • $

这个用来匹配字符串的结尾。

  • \<

这个用来匹配一个单词的开始。

  • \>

这个用来匹配一个单词的结尾。

  • [abc...]

这个字符序列用来匹配 "abc..."中的任意字符。

  • [^abc...]

这个否定的字符序列匹配所有的字符除了 "abc...".

  • r*

这个匹配以"r" 开始的后面有 0 个或者多个字符的字符串

  • r+

这个匹配以"r" 开始的后面有一个或者多个字符的表达式。

  • r?

以"r" 开始后面有 0 个或者 1 个其他的字符。

  • r1|r2

匹配"r1"或者"r2"。

  • (r1|r2)

匹配"r1"或者 "r2"并且把它当作一个分类正则表达式。

在BREs里面元字符"+ ? ( ) { } |"不再具有它们特殊的含义,而是使用的有反斜杠的版本"\+ \? \( \) \{ \} \|"。因此分组(r1|r2)需要被表示成\(r1|r2\)。 因为emacs,虽然基本上是 BRE,但是它把"+ ?"当作元字符。因此不需要特别表示它们。

举个例子,grep 可以用正则表达式来搜索文本:

     $ egrep 'GNU.*LICENSE|Yoyodyne' /usr/share/common-licenses/GPL
                         GNU GENERAL PUBLIC LICENSE
     		    GNU GENERAL PUBLIC LICENSE
     	Yoyodyne, Inc., hereby disclaims all copyright interest in the program

替换表达式[ ]

在替换表达式里面,下面的字符有特殊的含义:

  • &

这个会替换正则表达式所匹配的部分。(在 emacs 里面用 \&)

  • \n

这个会替换 n-th括号正则表达式所匹配的内容。

  • 在 Perl 里面,$n 替换了 \n,& 也没有特殊的含义。

举个例子:

     $ echo zzz1abc2efg3hij4 | \
       sed -e 's/\(1[a-z]*\)[0-9]*\(.*\)$/=&=/'
     zzz=1abc2efg3hij4=
     $ echo zzz1abc2efg3hij4 | \
       sed -e 's/\(1[a-z]*\)[0-9]*\(.*\)$/\2===\1/'
     zzzefg3hij4===1abc
     $ echo zzz1abc2efg3hij4 | \
       perl -pe 's/(1[a-z]*)[0-9]*(.*)$/$2===$1/'
     zzzefg3hij4===1abc
     $ echo zzz1abc2efg3hij4 | \
       perl -pe 's/(1[a-z]*)[0-9]*(.*)$/=&=/'
     zzz=&=

请特别注意这些括号正则表达式的格式,以及这些被匹配的文本在文本处理工具里面是如何使用的。

这些正则表达式可以用来控制光标的运动和编辑器里面的文本替换。

Debian使用手册导航

Debian安装

安装Debian GNU/Linux前准备 | 获取系统安装介质 | 使用Debian安装程序 | 启动进入新 Debian 系统 | 内核及其它信息 | 为Debian准备分区 | 安装指南 | 在Debian上安装Apache+Mysql+PHP

Debian使用

Debian 文件 | Debian基本操作 | Midnight Commander (MC) | 类Unix工作环境 | 类Unix文本处理 | 类Unix文件系统 | Debian生存命令 | Debian进阶 | Debian其他特性 | Debian下的Linux内核 | 启动系统 | Debian/活动记录及拷贝、创建子目录 | 差量备份、数据同步与系统冻结恢复 |常用命令与典型错误| 系统初始化 | 访问限制(Restricting access) | 刻录机 | 本地化

Debian升级

Debian系统升级 | 发行版升级到stable、testing或unstable

Debian技术支持

Debian技术支持

Debian常见问题

定义与概述 | 兼容性问题 | Debian 的软件系统 | Debian 的 FTP | Debian 的包管理系统 |Debian 的包管理工具 |更新系统 | Debian 与内核 | 定制 Debian GNU/Linux 的安装 |获取 Debian GNU/Linux 的支持 | 为 Debian 项目捐赠 | 作为商品销售Debian以及对其的展望

参考来源[ ]

http://www.debian.org/doc/manuals/debian-reference/ch-tutorial.zh-cn.html#s-text-process