正则表达式捕获文本

unix 操作文本的工具集内大多是以“行”为操作单位的,例如 grep,sort 等等。另外有一些工具如 cut 等可以将“行”中部分内容提取出来,这种操作通常叫做“捕获”。 但象 cut 这样的命令因为不支持正则表达式,只能完成很简单的捕获工作。因此能满足 LZ 需要的工具主要有 sed,awk,perl 等。其它支持正则表达式功能的脚本工具如 python 等也可以做到,但或多或少对系统环境本身有一定的要求(例如是否安装了 python 等等)。 sed 功能专一故执行速度最快,但它的正则表达式的表达能力最弱,写复杂表达式时很罗嗦。 awk 号称“万能过滤器”,正则表达式的表达能力很强。是专门用来执行过滤和捕获工作的好工具。但它相对独立,和系统的交互能力不强,因此只适合拿来处理文本。 perl 是泛用型脚本工具,LW 设计 perl 之初的目的就是拿它来替代 awk 及各类 shell 脚本工具,因此功能非常强大,相比之下正则表达式处理能力最强(应该算目前最强大的正则表达式处理工具了),但由于其书写过于灵活多变,掌握它不太容易,如果仅用来做捕获工作有点大材小用。 所以我建议 LZ 拿 awk 来解决问题。命令行: awk -f 脚本文件名.awk 数据文件名 脚本文件名.awk 中的内容: # 脚本开始 { # $0 表示当前行 # match() 执行完毕后,捕获的内容由 RSTART,RLENGTH 指出 # substr 抽出 $0 中的捕获的内容,并由 print 打印   if (match($0,/正则表达式/))     print substr($0,RSTART,RLENGTH); } # 脚本结束 上述脚本内容也可直接写在命令行上: awk '{if(match$0,/正则表达式/))print substr($0,RLENGTH);}' 数据文件名 当然也可以采用管道方式 cat 数据文件名 | awk '{if(match$0,RLENGTH);}' 希望对 LZ 有用。

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...